최근에는 컨테이너화가 트렌드가되었습니다. 서버는 여러 컨테이너를 가상화 할 수 있으며 동시에 서비스를 제공하고 하드웨어 리소스를 공유하며 비용을 절약 할 수 있습니다. 컨테이너화의 리더는 Docker입니다. 우리 회사의 모든 마이크로 서비스 릴리스는 컨테이너화되었습니다. Spring Boot는 또한 트렌드를 따르고 Docker의 Maven 플러그인을 추가하여 명령을 실행하여 이미지를 생성 할 수 있습니다.
이 섹션의 주요 내용은 코드에 관한 것이 아니라이 Docker 플러그인에 관한 것입니다. 더 이상 고민하지 않고 Pom으로 가십시오
<flugin> <groupid> com.spotify </groupid> <artifactid> docker-maven-plugin </artifactid> <버전> 0.4.12 </version> <configuration> <!-ImageName은 일반 [A-Z0-9-_.]를 준수해야한다는 점에 유의하십시오. https://github.com/spotify/docker-maven-plugin 무효 리포지토리 이름 ... 만 [a-z0-9-_.] 만 허용됩니다-> <imageName> 스프링-부트 docker-start </imageName> <! <! <Exposes> <-컨테이너에 포트 8080을 노출-> <Expose> </expose> </exposes> <!-입력, 명령-> entrypoint> [ "java", "-jar", "/$ {project.build.finalname} .jar"] <resource> </targetpath>/</targetpath>/</targetpath>/</intratpout>/</$ patple>/<gentpout>/<Resource>/ <Directory> $ {project.build.directory} </directory> <clointe> $ {project.build.finalName} .jar </include> </resource> </racple> </configuration> </plugin> ImageName은 이미지의 이름입니다. BaseImage는 기본 이미지입니다. 로컬 이미지가 있으면 원격 저장소에서 가져 와서 컨테이너에 포트 8080을 노출시키고 Java -jar 명령을 실행하고 마이크로 서비스를 시작하십시오. Docker를 사용하려면 Dockerfile 파일을 작성해야하며 내부의 요소는 Maven 플러그인 태그를 통해 완전히 반사됩니다. 여전히 전제 조건이 있습니다. 먼저 Docker를 설치해야합니다. 이 시점에서 우리는 달리기를 시작합니다
1 단계 : MVN Clean Package Docker 실행 : 생성 된 이미지를 만들려면 빌드.
2 단계 : 미러 Docker Run-IT -P 스프링 보트 도구 스타트를 시작하고 컨테이너의 로그를 확인하십시오.
spring-Boot-Docker-Start git : (마스터) Docker Run -it -p 스프링 부츠 도구 스타트. ____ __ __ _ /// ___'_ __ __ _ _ _ _ _) _ __ __ __ / / / () / ___ | .__ | | _ | | _ | | _/__, | / / / / / / / ===================================================== ___ / = / _ / _ / :: SPRING BOOT :: (v1.3.5.Release) 2018-03-25 08 : 41 : 56.274 정보 1- [Main] Com.shuqi.ap. PID 1이 포함 된 ApplicationMain (075543F8F5B6) (/spring-boot-docker-start.jar) 2018-03-25 08 : 41 : 56.287 정보 1 --- [main] com.shuqi.applicationmain : 활성 프로파일 세트 없음, 기본 프로파일로 떨어지지 않습니다. Default2018-06 : 41 : 41 : 41 : 41 : 41 : 46. --- [main] aTionConfigemedDedWebApplicationContext : 새로 고침 org.springframework.boot.context.embedded.annotationConfigemeddedWebApplicationContext@126d28d3 : 시작 날짜 [Sun 3 월 25:41:56 UTC 2018]; 컨텍스트의 루트 Hierarchy2018-03-25 08 : 41 : 58.356 정보 1 --- [Main] SBCETTOMCATEMBEDDEDSERVLETCONTAINER : 포트 (S)로 초기화 된 Tomcat : 8080 (HTTP) 2018-03-25 08 : 41 : 58.382 Info 1-- [Main] O.Apache. 서비스 Tomcat2018-03-25 08 : 41 : 41 : 58.384 정보 1 --- [main] org.apache.catalina.core.standardEngine : Servlet Engine : Apache Tomcat/8.0.332018-03-25 08 : 41 : 58.512 Info 1-- [OST-Start-1] [tomcat]. 초기화 스프링 내장 웹 applicationcontext2018-03-25 08 : 41 : 58.512 정보 1 --- [OST-StartStop-1] osweb.context.contextloader : root webApplicationContext : 초기화 : 2113 MS2018-03-25 08 : 41 : 58.920 정보 1-------- osbcembedded.filterregistrationbean : 매핑 서블릿 : 'Dispatcherservlet'에서 [/] 2018-03-25 08 : 41 : 58.928 정보 1 --- [Ost-StartStop-1] osbcembedded.filtergrationbean : 매핑 필터 : '문자 코딩 필터'to : [/*] 2018-0-25 08 : 41 : 58.937 정보 1 --- [Ost-StartStop-1] OSBCEMBEDDED.FILTERREGISTERATIONBEAN : MAPPING FILTER : 'HIDDENHTTPMETHODFILTER'TO : [/*] 2018-03-25 08 : 41 : 58.937 정보 1--- [OSTSTOP-1] OSBCEMBEND : FILTERGESTEDEDEDEDEDEDEDEDED. 필터 : 'httpputformContentFilter'to : [/*] 2018-03-25 08 : 41 : 41 : 58.938 정보 1 --- [OST-StartStop-1] OSBCEMBEDED.FILTERREGISTRATIONBEAN : 매핑 필터 : 'requestContextFilter'to : [/*] 2018-03-25 08 : 41 : 41 : 41 : 41 : 41 : 41 : 41 : 41 : 41 : 41 : 41 : 41 : 41 : 41 : 41 : 41 : 41 : 41 : 41 : 08 : 41 : 41 : 41 : 08. SWSMMAREQUESTMAPPINGHANDLERADAPTER : @ControllEradVice를 찾고 : org.springframework.boot.context.embedded.annotationConfigemeddedWebApplicationContext@126d28d3 : 시작 날짜 [Sun 3 월 25:41:56 UTC 2018]; 컨텍스트의 루트 Hierarchy2018-03-25 08 : 41 : 59.516 정보 1 --- [Main] SWSMMAREQUESTMAPPING HANDLERMPAPP : "{[/hello], methods = [get]}" "java.lang.string com.shuqi.controller.hellocontroller () 2018-03-2555555555515. 08 : 41 : 59.523 정보 1 --- [Main] SWSMMAREQUESTMAPPINGHANDLERMPAPP : MAPPED "{[/ERROR], provers = [text/html]}" "공개 org.springframework.servlet.ModelandView org.springframework.boot.autoconfigure.web.basicerrorcontroller.errorhtml (javax.servlet.http.httpservletrequest, javax.servlet.http.httpervletresponse) 2018-03-25 08 : 41 : 59.524 ofo 1---- 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) 2018-03-25 08 : 41 : 59.584 Info 1-- [main] Oswshandler.shandlehlhhllermpaper : mapped webjars/* [class org.springframework.web.servlet.resource.resourcehttprequesthandler] 2018-03-25 08 : 41 : 59.585 Info 1 --- [Main] OswShandler.simpleurlhandlermpapp : 유형의 핸들러에 매핑 된 URL 경로 [/**] org.springframework.web.servlet.resource.resourcehttprequesthandler] 2018-03-25 08 : 41 : 59.645 정보 1 --- [main] oswshandler.simpleurlhandlermping : 매핑 된 URL 경로 [/**/favicon.ico] 유형의 핸들러에 대한 매핑 된 URL 경로] org.springframework.web.servlet.resource.resourcehttprequesthandler] 2018-03-25 08 : 41 : 59.754 Info 1 --- [Main] OsjeaAnnotationMbeanExporter : 스타트 업에 JMX 노출에 대한 Beans 등록 2018-03-25 08 : 49.834 Info 1--- SBCETTOMCATEMBEDDEDSERVLETCONTAINER : TOMCAT는 포트에서 시작되었습니다 : 8080 (HTTP) 2018-03-25 08 : 41 : 59.838 정보 1 --- [Main] COM.Shuqi.applicationMain : 4.084 초의 응용 프로그램 관리 시작 (5.012에 대한 JVM 시작) [2018-0-0-0251, 5.012). 성공적으로 시작했습니다.
3 단계 : Docker PS를 입력하여 컨테이너의 포트 8080이 로컬 포트에 매핑되는지 확인하십시오.
컨테이너 ID 이미지 명령 생성 상태 포트 이름 075543f8f5b6 스프링 보트 도구-시작 "Java -jar /Spring ..."약 1 분 전에 약 1 분 전 0.0.0.0:32768->8080/tcp trusting_noether
포트 32768이 될 것입니다.
4 단계 : 브라우저에 http : // localhost : 32768/hello를 입력하고 결과를 확인하십시오.
이것은 우리가 컨테이너에서 프로그램에 성공적으로 액세스했음을 의미합니다!
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.