Spring의 공식 웹 사이트에 시작 기사가 있는데 Docker를 사용하여 Spring Boot 응용 프로그램을 게시하는 방법을 소개합니다. 매우 상세하지만 일부 세부 사항은 언급되지 않았으며 공식 웹 사이트의 항목 설명서는 영어 버전에 있습니다. 영어가 열악한 친구를위한 참조로 재구성하고 여기에 기록하고 각서를 남겨 두겠습니다.
준비하다
필요한 도구 및 운영 환경 :
프로젝트를 만듭니다
우선, 스프링 부팅 프로젝트를 만들어야합니다. Spring Tool Suite와 Intellij 아이디어에는 모두 플러그인이 제공됩니다. 또 다른 방법은 http://start.spring.io/에서 그것을 만드는 것입니다. 이 방법은 권장됩니다. Group Id 및 Artifact Id 양식으로 작성한 후 프로젝트 생성 버튼을 클릭하여 생성하고 다운로드 된 프로젝트를 좋아하는 IDE로 가져옵니다.
pom.xml 파일을 수정하고 docker-maven-plugin을 추가하십시오.
<? xml version = "1.0"encoding = "utf-8"?> <project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns : xsi = "http://www.w3.org/2001/xmlschema-instance"xsi : schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.0.xsd" <modeversion> 4.0.0 </modelversion> <groupid> org.matrixstudio.springboot </groupid> <artifactid> docker </artifactid> <bersion> 0.0.1-snapshot </version> <packaging> jar </packaging> <name> docker </name> <description> </descript> </descript> </description> <groupid> org.springframework.boot </groupid> <artifactid> 스프링-부트-스타터-팔렌트 </artifactid> <버전> 1.5.2.2.5.2. release </version </version> <realativePath/> <!-리포지토리에서의 모 uxup parent-> </parent> <proffert> <project.build.sourceodon </preject.build.sould. <project.reporting.outputencoding> utf-8 </project.reporting.outputencoding> <java.version> 1.8 </java.version> <docker.image.prefix> springio.image.prefix> </properties> </properties> </propendencies> <GroupSid> orgfrimwork.spronwring.sprongrem.sprongr.sprong.sprong.spreples <Artifactid> Spring-Boot-starter-web </artifactid> </fectionency> <pectionement> <groupid> org.springframework.boot </groupid> <trifactid> spring-boot-starter-test </artifactid> <scope> test </scope> </dependemencies> <plugins> <groupid> org.springframework.boot </groupid> <artifactid> spring-boot-maven-plugin </artifactid> </arfifactid> </arfifactid> </arfifactid> </arfifactid> </grucken plugin-> <flugin> <groupid> com.spotify </groupid> <artifactid> docker-maven-plugin> <버전> 0.4.3.4.3.4.4.3. <Imagename> $ {docker.image.prefix}/$ {project.artifactid} </imageName> <deCkerDirectory> src/main/docker </dockerDirectory> <Resource> <gartingPath>/</targetPath> <directory> $ {project.build.directory} </directory> <포함> $ {project.build.finalname} .jar </include> </resources> </configuration> </plugin> </plugins> </build> </project>Docker-Maven-Plugin 플러그인은 Spring Boot 프로젝트를 Docker 이미지로 빌드하는 데 사용됩니다.
DockerApplication.java 파일을 열고 다음 내용으로 수정하십시오.
패키지 org.matrixstudio.springboot; import org.springframework.springApplication; import org.springframework.boot.autoconfigure.springbootApplication; import org.springframework.wb.bind.annotation.requestmapping; import org.springframework.web.bind.annotation.restcontroller;@springbootapplication@restcontrollerpublic class dockerapplication {@requestmapping ( "/") public string home () {return "Hello Docker World"; } public static void main (String [] args) {springApplication.run (dockerApplication.class, args); }} 컴파일하고 실행하십시오
다음 명령을 실행하여 Spring Boot 프로젝트를 실행하십시오.
MVN 패키지 && java -jar target/docker-0.0.1-snapshot.jar
브라우저를 열고 http://localhost:8080 입력하십시오. "Hello Docker World"가 나타나면 실행이 성공했음을 의미합니다.
참고 : 위 명령을 실행할 때는 공식 Maven 저장소에서 많은 종속성 패키지를 다운로드해야합니다. 국내 네트워크는 안정적이지 않으며 다운로드 속도는 느립니다. Alibaba 's Maven Mirror 저장소와 같은 제 3자가 제공 한 거울 사이트를 사용하는 것을 고려할 수 있습니다. pom.xml에 다음 구성을 추가하십시오.
<project xmlns = "http://maven.apache.org/pom/4.0.0"xmlns : xsi = "http://www.w3.org/2001/xmlschema-instance"xsi : schemalocation = "http://maven.apache.org/pom/0.0.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd "> <modelversion> 4.0.0 </modelversion> <groupid> org.matrixstudio.springboot </groupid> <artifactid> docker </artifactid> <버전> </version> <snap </version> 종속성-> ...... <!-빌드-> ...... ...... <!-Aliyun Repository-> <repository> <id> Central </id> <name> aliyun </name> <url> http://maven.aliyun.com/nexus/content/groups/public/ </url> <releases </releas> </repository> </repository> </repository> </repository> </project>
컨테이너화 프로젝트
먼저 Docker가 컴퓨터에 설치되어 있는지 확인하십시오. Docker가 Linux 서버에 설치된 경우 위의 Spring Boot 프로젝트를 서버에 업로드해야합니다. 다음 단계는 Linux 환경에서 작동한다고 가정합니다.
dockerfile을 만듭니다
Docker는 Dockerfile 이라는 파일을 사용하여 이미지 레이어를 지정하므로 먼저 Dockerfile 파일을 작성하고 다음 명령을 실행하여 Dockerfile 파일을 작성해야합니다.
sudo tee src/main/docker/dockerfile <<-'eof'from frolvlad/alpine-oraclejdk8 : slimvolume/tmpadd docker-0.0.1-snapshot.jar app.jarrun sh -c't $ java_opts -djava.security.egd = file :/dev/./ urandom -jar /app.jar "] eof
위의 명령을 대략 설명해 봅시다.
Docker 이미지를 작성하십시오
Docker 이미지를 작성하려면 다음 명령을 실행하십시오.
MVN 패키지 Docker : 빌드
빌드가 완료되면 다음 명령을 실행하여 볼 수 있습니다.
Sudo Docker Images
결과는 다음과 같습니다.
저장소 태그 이미지 ID 생성 크기
Springio/Docker 최신 7e2ba2f7e81e 2 분 전 195 MB
Frolvlad/Alpine-OracleJDK8 슬림 00D8610F052E 4 일 전 167 MB
우리가 만든 이미지가 나타난 이미지를 볼 수 있으며 다음 단계는 이미지를 실행하는 것입니다.
도커 이미지를 실행하십시오
이전 단계에서 내장 된 Docker 이미지를 실행하려면 다음 명령을 실행하십시오.
Sudo Docker Run -P 8080 : 8080 -t Springio/Docker
예상치 못한 일이 발생하지 않으면 다음 출력이 표시됩니다.
. ____ __ __ _ /// ___'_ __ __ _ (_) _ __ __ __ _ / / / () / ___ | .__ || | _ | | _ | | _ | | _/__, | / / / / / / / / / ================================================== ____ / = / _ / _ / :: (v1.5.2.2.2.20) 2017-03-08 03 : 34 : 59.434 inta 6-- [Main] om] DockerApplication v0.0.1-snapshot on 00EED53E6928 PID 6 ( /app.jar는 ROOT /ROOT에서 시작한 /) 2017-03-08 03 : 34 : 59.445 정보 6 --- [MAIN] OMSPRINGBOOT.DOCKERAPPLICATION : 활성 프로파일 세트 없음, 기본 프로파일로 떨어지는 기본 프로파일 : 기본 2017-03 : 5. Info 6 --- [Main] CationConfigemeddedWebApplicationContext : 새로 고침 org.springframework.boot.context.embedded.annotationConfigemeddedWebApplicationContext@4b9af9a9 : 시작일 [wn wnb wend 3 월 03:34:59 GMT 2017]; 컨텍스트의 루트 Hierarchy2017-03-08 03 : 35 : 03.755 Info 6 --- [Main] SBCETTOMCATEMBEDDEDSERVLETCONTAINER : TOMCAT는 포트 (S) : 8080 (HTTP) 2017-03-08 03 : 35 : 03.807 Info 6-- [MING] O.APACHE. 서비스 Tomcat2017-03-08 03 : 35 : 03.821 정보 6 --- [main] org.apache.catalina.core.standardEngine : Servlet Engine : Apache Tomcat/8.5.112017-03-08 03 : 35 : 04.042 정보 6 --- [OCAT]. 초기화 스프링 내장 웹 applicationcontext2017-03-08 03 : 35 : 04.043 정보 6 --- [OST-StartStop-1] Ost-web.context.contextLoader : root webApplicationContext : 4303 MS2017-03-08 03 : 35 : 04.41 Info 6에서 완료되었습니다. Ost-Bwservlet.servletregistrationbean : 매핑 서블릿 : 'Dispatcherservlet'에서 [/] 2017-03-08 03 : 35 : 04.455 정보 6 --- [Ost-StartStop-1] OsbwServlet.filtergrationBean : 매핑 필터 : '문자 에코딩 플리터'to : [/*] 2017-03-088. 03 : 35 : 04.457 정보 6 --- [OST-StartStop-1] OSBWSERVLET.FILTERREGISTRATIONBEAN : 매핑 필터 : 'HIDDENHTTPMETHODFILTER'TO : [/*] 2017-03-08 03 : 35 : 04.468 정보 6---- [OST-StartSP-1] OSBWERVERTERCLET. 필터 : 'httpputformContentFilter'to : [/*] 2017-03-08 03 : 35 : 04.468 정보 6 --- [OST-StartStop-1] OSBWSERVLET.FILTERREGISTRATIONBEAN : 매핑 필터 : 'requestContextFilter'to : [/*] 2017-03-08 03 : 35 : 0.110 정보. SWSMMAREQUESTMAPPINGHANDLERADAPTER : @ControllEradVice를 찾고 : org.springframework.boot.context.embedded.annotationconfigemeddedwebapplicationcontext@4b9af9a9 : 스타트 업 날짜 [wn wnb mar 03:34:59 GMT 2017]; 컨텍스트의 루트 Hierarchy2017-03-08 03 : 35 : 05.390 정보 6 --- [Main] SWSMMAREQUESTMAPPING HANDLERMPAPT : "{[/]}" "공개 java.lang.string org.matrixstudio.springboot.dockerApplication.home () 2017-08 03 : 03 : 03. --- [Main] SWSMMAREQUESTMAPPENDHANDLERMPAPT : MAPPED "{[/error], public org.springframework.web.servlet.modelandview에 대한 rets = [text/html]}" org.springframework.boot.autoconfigure.web.basicerrorcontroller.errorhtml (javax.servlet.http.httpservletrequest, javax.servlet.http.httpervletresponse) 2017-03-08 03 : 35 : 0404 정보. SWSMMAREQUESTMAPPINGHANDLERMPAPT : "{[/ERROR]}" "공개 org.springframework.http.responsentity <java.util.map <java.lang.string, java.lang.object >>에 매핑되었습니다 org.springframework.boot.autoconfigure.web.basicerrorcontroller.error (javax.servlet.http.httpservletrequest) 2017-03-08 03 : 35 : 05.512 Info 6 --- [Main] Oswshandler.simplehlhlermpapping : mappedl onllermpapped 유형 [class org.springframework.web.servlet.resource.resourcehttprequesthandler] 2017-03-08 03 : 35 : 05.512 Info 6 --- [Main] OswShandler.simpleurlhandlermpappe : 맵핑 된 URL 경로 [/**] 유형의 핸들러에 [Class. org.springframework.web.servlet.resource.resourcehttprequesthandler] 2017-03-08 03 : 35 : 05.639 Info 6 --- [Main] Oswshandler.simpleurlhandlermping : 매핑 된 URL 경로 [/**/favicon.ico] [Classe의 핸들러]. org.springframework.web.servlet.resource.resourcehttprequesthandler] 2017-03-08 03 : 35 : 06.019 Info 6 --- [Main] OsjeaAnnotationMbeanPporter : startup2017-03-08에 JMX 노출을위한 Beans 콩을위한 Beans SBCETTOMCATEMBEDDEDSERVLETCONTAINER : TOMCAT는 항구에서 시작되었습니다 : 8080 (HTTP) 2017-03-08 03 : 35 : 06.183 정보 6 --- [Main] OmspringBoot.dockerapplication : 7.893 초에서 DockerApplication (8.743)에서 시작되었습니다. 2017-03-08. 03 : 35 : 56.728 정보 6 --- [NIO-8080-Exec-1] Occc [Tomcat]. [LocalHost]. Frameworkservlet 'DispatcherServlet': 초기화 시작 2017-03-08 03 : 35 : 56.774 정보 6 --- [NIO-8080-Exec-1] OsWeb.Servlet.DisPatcherServlet : Framegrervlet 'DispatcherServlet': 43 MS에서의 초기화 완료실행중인 Docker 컨테이너를 보려면 다음 명령을 실행하십시오.
Sudo Docker PS
Docker 컨테이너가 실행중인 것을 알 수 있습니다.
컨테이너 ID 이미지 명령 생성 상태 포트 이름 00EED53E6928 Springio/Docker "SH -C 'Java $ java ...
이제 "Hello Docker World"결과를 보려면 http : // localhost : 8080을 입력하십시오.
컨테이너를 중지하려면 다음 명령을 실행할 수 있습니다.
Sudo Docker Stop 00e
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.