spring boot 응용 프로그램 이 docker (전체 버 전) 에 발표 되 었 습 니 다.


원문 은 다음 과 같다.http://blog.anxpp.com/index.php/archives/1075/
Spring boot 는 마이크로 서비스 에 매우 적합 합 니 다. docker 를 더 하면 완벽 합 니 다!
By  물고기 거품 기술 팀
spring boot 응용 프로그램 이 docker 전체 버 전 으로 발표 되 었 습 니 다.
개술
    spring boot 와 docker 자체 가 소개 되 지 않 았 습 니 다. 본 고 는 주로 사용 되 었 습 니 다. docker - maven - plugin 플러그 인 은 spring boot 를 원 키 로 docker 용기 에 직접 발표 합 니 다.
    글 끝 에 원본 Git 주 소 를 제공 합 니 다.
    필자 docker 는 Centos 7.2 의 클 라 우 드 서버 에 배치 되 어 있 으 며, VM 가상 컴퓨터 로 바 뀌 는 Linux 도 마찬가지다.
    사용 하 는 소프트웨어 버 전 은 모두 현재 최신 이 고 구축 도 구 는 maven 입 니 다. 다른 도 구 를 사용 하면 해당 절 차 를 사용 하여 교체 하 십시오.
 
2. Docker 설치 및 설정
    필자 가 테스트 에 사용 한 리 눅 스 는 Centos 로 다른 시스템 도 크게 다 르 지 않다.
    1. Docker 설치
    yum 로 직접 설치 하면 됩 니 다:
sudo yum install docker

    설치 완료 후 다음 명령 을 통 해 설치 성공 여 부 를 확인 할 수 있 습 니 다.
docker version

    정상 적 인 출력 버 전 등 관련 정 보 는 설치 에 성 공 했 음 을 나타 낸다.
    2. 설정 Docker Remote API
    docker - maven - plugin 플러그 인 은 Docker Remote API 를 사용 하여 원 격 으로 미 러 를 제출 합 니 다. docker 는 기본적으로 이 옵션 을 열지 않 았 습 니 다. docker 서비스 설정 을 직접 수정 하면 됩 니 다.
Centos 7 프로필 위치: / usr / lib / systemd / system / docker. service
    ExecStart 에서 매개 변 수 를 직접 시작 하 는 / usr / bin / dockerd TCP 연결 을 열기 위해 뒤에 추가: - Htcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
    Docker Hub 미 러 가속 주 소 를 추가 할 수도 있 습 니 다. 수정 이 완료 되면 다음 과 같은 완전한 설정 을 사용 할 수 있 습 니 다.
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target
Wants=docker-storage-setup.service
Requires=docker-cleanup.timer

[Service]
Type=notify
NotifyAccess=all
KillMode=process
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
Environment=GOTRACEBACK=crash
Environment=DOCKER_HTTP_HOST_COMPAT=1
Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin
ExecStart=/usr/bin/dockerd --registry-mirror=https://registry.docker-cn.com -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock \
          --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
          --default-runtime=docker-runc \
          --exec-opt native.cgroupdriver=systemd \
          --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
          $OPTIONS \
          $DOCKER_STORAGE_OPTIONS \
          $DOCKER_NETWORK_OPTIONS \
          $ADD_REGISTRY \
          $BLOCK_REGISTRY \
          $INSECURE_REGISTRY
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TimeoutStartSec=0
Restart=on-abnormal
MountFlags=slave

[Install]
WantedBy=multi-user.target

 
    systemd 를 다시 불 러 오고 새 셀 이나 변 경 된 셀 (docker) 을 검색 합 니 다.
systemctl daemon-reload docker

 
    docker 시작 (시작 되면 restart 사용):
systemctl start docker

 
    로 컬 테스트:
curl http://localhost:2375

 
    잘못 보고 하지 않 았 다 면 거의 완성 되 었 을 것 이다.내 작업 환경 은 windows 의 것 으로 curl 도 구 를 설치 하지 않 고 브 라 우 저 에 직접 입력 합 니 다.http://ip:2375 원 격 테스트 도 가능 합 니 다. 접근 할 수 없 으 면 docker 가 있 는 서버 의 방화벽 설정 등 을 확인 하 십시오.
    3. 부모 미 러 다운로드
    이 단 계 는 필수 가 아 닙 니 다. Docker 는 Dockerfile 에 따라 미 러 를 생 성 할 때 필요 한 의존 도 를 자동 으로 다운로드 합 니 다. 그러나 스프링 boot 애플 리 케 이 션 을 완성 한 후 Docker 에 구축 하고 발표 할 때 바보 같이 되 지 않도록 부모 미 러 를 로 컬 로 끌 어 올 릴 수 있 습 니 다.
    자바 8 운영 환경의 docker 미 러 가 현재 가장 인기 있 는 것 은? frolvlad / alpine - oraclejdk 8, 그럼 우리 그 를 사용 합 시다.
docker pull frolvlad/alpine-oraclejdk8

    이것 은 시간 이 좀 걸 릴 수 있 지만, 여기에 두 어도 상관 하지 않 고 바로 다음 단 계 를 진행 할 수 있다.
    일반적으로 미 러 버 전 은 지정 되 지 않 습 니 다. 기본 값 은 당기 미 러 의 latest 버 전 입 니 다.
 
3. Spring boot 응용 프로그램 을 완성 하고 docker - maven - plugin 플러그 인 을 추가 합 니 다.
    1. Spring boot 응용 프로그램 완성
    Eclipse 는 STS 플러그 인 을 설치 할 수 있 습 니 다. Idea 도 Spring Boot 프로젝트 의 원 키 생 성 도 구 를 가지 고 있 습 니 다. 여 기 는 가장 간단 한 웹 프로젝트 를 직접 생 성하 고 시작 코드 에 약간의 코드 를 추가 하여 대외 적 으로 간단 한 인 터 페 이 스 를 제공 하여 테스트 에 사용 합 니 다.
package com.anxpp.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class DockerApplication {

    public static void main(String[] args) {
        SpringApplication.run(DockerApplication.class, args);
    }

    @RequestMapping
    public String index(){
        return "Hello world !";
    }
}

 
    완료 후 실행 및 접근 가능http://localhost:8080 정상 적 인 작업 여 부 를 시험 하 다.
    2, docker - maven - plugin 플러그 인 추가
    플러그 인의 최신 버 전 은 0.4.13 입 니 다. 여기에 완전한 pom 파일 을 붙 입 니 다.


    4.0.0
    com.anxpp.demo
    docker
    0.0.1-SNAPSHOT
    jar
    docker
    Demo project for Spring Boot

    
        org.springframework.boot
        spring-boot-starter-parent
        1.5.4.RELEASE
         
    

    
        anxpp
        UTF-8
        UTF-8
        1.8
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
            
            com.spotify
            docker-maven-plugin
            0.4.13
                
                    ${docker.image.prefix}/${project.artifactId}
                    http://***.***.anxpp.com:2375
                    src/main/docker
                    
                        
                            /
                            ${project.build.directory}
                            ${project.build.finalName}.jar
                    
                
                
            
        
    

 
    imageName 은 생 성 된 미 러 이름 을 지정 합 니 다. dockerHost 는 Docker Remote API 의 원 격 접근 주 소 를 지정 합 니 다. 여 기 는 실제 상황 에 따라 작성 하 십시오.
    3. Dockerfile 작성
    src / main / docker 에 Dockerfile 파일 을 추가 해 야 합 니 다.전체 파일 내용 은 다음 과 같 습 니 다.
FROM frolvlad/alpine-oraclejdk8
VOLUME /tmp
ADD docker-0.0.1-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

 
    ADD 뒤에 자신의 패키지 가 생 성 한 jar 파일 이름 을 실제 상황 에 따라 입력 하 십시오.
 
구축
    1. 미 러 생 성
    우선 Maven 의 package 명령 을 실행 하여 jar 파일 을 생 성 해 야 합 니 다. docker: build 를 직접 실행 하면 jar 파일 을 찾 지 못 해 구축 에 실패 합 니 다!
mvn clean package

    현재 의 IDE 도 도형 화 도 구 를 제공 할 것 이 니 마 우 스 를 끌 고 점 을 찍 으 면 된다.
    이제 2, 3 의 부모 미 러 가 다운로드 되 었 는 지 살 펴 보고 다운로드 가 완료 되 었 으 면 다음 절 차 를 진행 할 수 있 습 니 다 (명령 을 입력 하여 미 러 목록 을 볼 수 있 습 니 다).
    포장 완료 후 docker: build 를 실행 합 니 다.
    모든 것 이 잘 되면 미 러 가 생 성 되 어 docker 에 보 내 고 다음 명령 을 입력 하여 미 러 목록 을 봅 니 다.
docker images

    목록 에 우리 가 방금 만 든 미 러 가 있다 면 이 절 차 는 모두 성공 적 이라는 것 을 나타 낸다.
    2. 운행
    미 러 가 실 행 된 후 용기 가 됩 니 다. 생 성 된 미 러 를 시작 하려 면 다음 명령 을 사용 하 십시오.
docker run -d -p 8080:8080 -t anxpp/docker

    -d. 용기 배경 을 실행 시 키 는 것 입 니 다.
    -p 는 용기 안의 포트 를 docker 가 있 는 시스템 의 포트 에 비 추 는 것 입 니 다.
    -t 는 나중에 콘 솔 로그 에 들 어 갈 수 있 도록 가짜 단말 기 를 엽 니 다.
    실행 중인 용기 보기:
docker ps

    브 라 우 저 를 사용 하여 모든 것 이 잘 되 고 있 는 지 테스트 할 수 있 습 니 다.
    http://***.***.anxpp.com:8080
    그러면 docker 로 Spring Boot 응용 프로그램 을 구축 하고 실행 하 며 발표 합 니 다.
 
다섯, 몇 마디 더
    Docker 글 참고: Docker 기초 튜 토리 얼 및 실천 칼럼
    Spring boot 응용 소스 GitHub:https://github.com/anxpp/springboot-docker-demo.git
    문제 가 있 으 면 빨리 메 시 지 를 남 겨 라. 내 가 기억 할 때...

좋은 웹페이지 즐겨찾기