먼저 간단한 스프링 부트 프로젝트를 빌드한 다음 프로젝트에 Docker 지원을 추가하고 마지막으로 프로젝트를 배포합니다.
간단한 스프링 부트 프로젝트
pom.xml에서 스프링 부트 2.0 관련 의존성 사용
<parent> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-parent</artifactid> <version>2.0.0.release</version> </parent>
웹 추가 및 의존성 테스트
<dependencies> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-test</artifactid> <scope>test</scope> </dependency> </dependencies>
액세스 시 index() 메소드가 있는 dockercontroller 생성 반환: hello docker!
@restcontroller public class dockercontroller { @requestmapping("/") public string index() { return "hello docker!"; } }
Startup class
@springbootapplication public class dockerapplication { public static void main(string[] args) { springapplication.run(dockerapplication.class, args); } }
프로젝트를 추가한 후 시작합니다. 성공적으로 시작한 후 브라우저에 액세스하면 http://localhost:8080/ 페이지가 반환됩니다. hello docker! 프로젝트 구성이 정상입니다.
Spring 부트 프로젝트에 docker 지원 추가
pom에 docker 이미지 이름 추가 이 문서에서는 이미지를 빌드하는 방법을 설명합니다.
<properties> <docker.image.prefix>springboot</docker.image.prefix> </properties>
이 dockerfile은 jdk 기본 환경을 구축하고 이미지에 spring boot jar를 추가합니다. 간단한 설명:
from은 이미지가 로컬이 아닌 경우 jdk8 환경을 사용한다는 의미입니다. dockerhub
volume에서 다운로드되며 볼륨은 /tmp 디렉터리를 가리킵니다. 스프링 부트는 내장 Tomcat 컨테이너를 사용하므로 Tomcat은 기본적으로 /tmp를 작업 디렉터리로 사용합니다. 이 명령의 효과는 다음과 같습니다. 호스트의 /var/lib/docker 디렉터리에 임시 파일을 만들고 이를 컨테이너의 /tmp 디렉터리에 연결합니다
add, 파일을 복사하고 이름을 바꿉니다
진입점, Tomcat의 시작 시간을 단축하려면 java.security.egd의 시스템 속성을 추가하여 진입점으로 /dev/urandom을 가리키도록
이런 식으로 스프링 부트 프로젝트는 도커 종속성을 추가합니다.
스프링부트 프로젝트를 패키징하려면 도커 환경이 필요하기 때문에 윈도우에서 도커 환경을 구축하는 것은 번거롭기 때문에 여기서는 Centos 7을 예로 들어보겠습니다.
Installation
<build> <plugins> <plugin> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-maven-plugin</artifactid> </plugin> <!-- docker maven plugin --> <plugin> <groupid>com.spotify</groupid> <artifactid>docker-maven-plugin</artifactid> <version>1.0.0</version> <configuration> <imagename>${docker.image.prefix}/${project.artifactid}</imagename> <dockerdirectory>src/main/docker</dockerdirectory> <resources> <resource> <targetpath>/</targetpath> <directory>${project.build.directory}</directory> <include>${project.build.finalname}.jar</include> </resource> </resources> </configuration> </plugin> <!-- docker maven plugin --> </plugins> </build>
from openjdk:8-jdk-alpine volume /tmp add spring-boot-docker-1.0.jar app.jar entrypoint ["java","-djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
Docker China accelerator 사용
yum install docker
Docker 다시 시작
service docker start chkconfig docker on #lctt 译注:此处采用了旧式的 sysv 语法,如采用centos 7中支持的新式 systemd 语法,如下: systemctl start docker.service systemctl enable docker.service
docker 버전을 입력하고 버전정보가 나오면 정상적으로 설치가 된 것입니다.
jdk 설치vi /etc/docker/daemon.json #添加后: { "registry-mirrors": ["https://registry.docker-cn.com"], "live-restore": true }
systemctl restart docker
yum -y install java-1.8.0-openjdk*
java -version을 입력하여 버전 정보와 설치를 반환하세요 보통이다.
maven 설치다운로드:
export java_home=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64 export path=$path:$java_home/bin
source /etc/profile
에 다음 줄을 추가하여 환경 변수를 적용하려면 /etc/profile 소스를 실행해야 한다는 점을 기억하세요.
mvn -version을 입력하면 버전 정보가 반환되고 그러면 설치가 정상입니다.
이제 전체 빌드 환경이 구성되었습니다.
Docker를 사용하여 스프링 부트 프로젝트 배포spring-boot-docker 프로젝트를 서버에 복사하고 패키징 테스트를 위한 프로젝트 경로를 입력하세요.
## 解压 tar vxf apache-maven-3.5.2-bin.tar.gz ## 移动 mv apache-maven-3.5.2 /usr/local/maven3
maven_home=/usr/local/maven3 export maven_home export path=${path}:${maven_home}/bin
첫 번째 빌드는 약간 느릴 수 있습니다. 다음 내용이 표시되면 빌드에 성공한 것입니다.
#打包 mvn package #启动 java -jar target/spring-boot-docker-1.0.jar
docker Images 명령을 사용하여 빌드된 이미지를 확인하세요.
mvn package docker:build
springboot/spring-boot-docker는 무엇입니까? 이미지를 빌드했습니다. 다음 단계는 이미지를 실행하는 것입니다
... step 1 : from openjdk:8-jdk-alpine ---> 224765a6bdbe step 2 : volume /tmp ---> using cache ---> b4e86cc8654e step 3 : add spring-boot-docker-1.0.jar app.jar ---> a20fe75963ab removing intermediate container 593ee5e1ea51 step 4 : entrypoint java -djava.security.egd=file:/dev/./urandom -jar /app.jar ---> running in 85d558a10cd4 ---> 7102f08b5e95 removing intermediate container 85d558a10cd4 successfully built 7102f08b5e95 [info] built springboot/spring-boot-docker [info] ------------------------------------------------------------------------ [info] build success [info] ------------------------------------------------------------------------ [info] total time: 54.346 s [info] finished at: 2018-03-13t16:20:15+08:00 [info] final memory: 42m/182m [info] ------------------------------------------------------------------------
시작이 완료된 후 docker ps를 사용하여 실행 중인 이미지를 봅니다.
docker images repository tag image id created size springboot/spring-boot-docker latest 99ce9468da74 6 seconds ago 117.5 mb
우리가 빌드한 컨테이너가 실행 중인 것을 볼 수 있습니다. 브라우저를 방문하세요. http ://192.168.0.x:8080/,
docker run -p 8080:8080 -t springboot/spring-boot-docker
를 반환하여 스프링 부트 프로젝트가 docker를 사용하여 성공적으로 배포되었음을 나타냅니다.
위 내용은 Docker를 사용하여 SpringBoot 프로젝트를 배포하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!