이 기사는 Maven 플러그인을 사용하여 Docker 이미지를 빌드하는 방법을 소개합니다. 나는 그것을 당신과 공유 할 것입니다. 세부 사항은 다음과 같습니다.
도구
좋은 일을하고 싶다면 먼저 도구를 연마해야합니다. 연구 후 다음 Docker Maven 플러그인이 내 비전 분야에 들어갔습니다.
| 플러그인 이름 | 공식 주소 |
|---|---|
| Docker-Maven-Plugin | https://github.com/spotify/docker-maven-plugin |
| Docker-Maven-Plugin | https://github.com/fabric8io/docker-maven-plugin |
| Docker-Maven-Plugin | https://github.com/bibryam/docker-maven-plugin |
저자는 3 차원에서 첫 번째를 선택했습니다. 별, 사용 편의성 및 업데이트 빈도.
플러그인으로 도커 이미지를 빌드하십시오
간단한 사용
이전 프로젝트를 수행합시다 : Microservice-Discovery-Eureka는 예를 들어 보자.
pom.xml에 다음 단락을 추가하십시오
<빌드> <플러그인> <!-Docker 's Maven 플러그인, 공식 웹 사이트 : https://github.com/spotify/docker-maven-plugin-> <flugin> <groupid> com.spotify </groupid> <artifactid> docker-maven-plugin </artifactid> 0.4.12 <! 일반 [A-Z0-9-_.], 그렇지 않으면 빌드는 성공하지 못합니다-> <!-https://github.com/spotify/docker-maven-plugin 유효하지 않은 저장소 이름 ... [a-z0-9-_.] 만 허용됩니다-> <image </imagename> </imagename> <baseimage> </imagename> <ETTRICEPOINT> [ "Java", "-jar", "/$ {project.build.finalname} .jar"] </entermpoint> <proctionpoint> <resource> <gargetPath>/</targetpath> <directory> $ {project.build.build.directory} </directory> <clude> $ {project.build.finalname> </configuration> </plugin> </plugins> </build> 명령 실행 :
MVN Clean Package Docker : 빌드
콘솔에는 다음과 같은 것이 있습니다.
[info] 이미지 빌딩 마이크로 서비스-방향-eurekastep 1 : 라이브러리/javadigest의 Javapulling에서 : SHA256 : 581A4afcbbedD8FDF194D597CB5106C1F91463024FB3A49A2D9A2D9F025165EB675FSTATUS : java : newsURED의 최신 이미지. ---> EA40C858F006STEP 2 : /MICROSERVICE-DISCOVERY-EUREKA-0.0.1-SNAPSHOT.JAR // ---> D1C174083BCAREMOVING 중간 컨테이너 91913D847C20Step 3 : EntryPoint Java -Jar /microservice-discovery-eureka-0.0.1-snapshot.jar ---> 0f2aeccdfd46 --->에서 실행되는 중간 컨테이너 0f2aeccdfd46successely D57B027ca65a [정보] MicroService-discovery-eureuy-eure ka] ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
축하합니다. 건설이 성공적이었습니다.
Docker 이미지를 실행하고 이미지가 성공적으로 빌드되었음을 발견했습니다.
리포지토리 태그 이미지 ID 생성 된 시즈 미크로 서비스-유적 카 최신 D57B027CA65A 약 1 분 전 681.5 MB
거울을 시작하십시오
Docker Run -P 8761 : 8761 MicroService-Discovery-Eureka
Docker 이미지가 매우 빨리 시작될 것입니다.
액세스 테스트
http : // docker host ip : 8761을 방문하여 Eureka 인터페이스를 정상적으로보십시오.
dockerfile로 빌드하십시오
위의 방법은 가장 쉬운 방법입니다. 여러 번, 우리는 여전히 dockerfile의 도움으로 그것을 구축해야합니다. 먼저/microService-discovery-eureka/src/main/docker directory에서 deckerfile 파일을 만듭니다.
Java : 8volume/tmpadd microservice-discovery-eureka-0.0.1-snapshot.jar app.jarrun bash -c 't
pom.xml을 수정하십시오
<빌드> <플러그인> <!-Docker 's Maven 플러그인, 공식 웹 사이트 : https://github.com/spotify/docker-maven-plugin-> <flugin> <groupid> com.spotify </groupid> <artifactid> docker-maven-plugin </artifactid> 0.4.12 <! 일반 [a-z0-9-_.], 그렇지 않으면 빌드는 성공하지 못할 것입니다-> <!-https://github.com/spotify/docker-maven-plugin 유효하지 않은 저장소 이름 ... 만 [a-z0-9-_.] 만 허용됩니다-> <microservice-disco-eureca-dockerfile </imageame <! dockerfile이 위치-> <dockerdirectory> $ {project.basedir}/src/main/docker </dockerdirectory> <resource> <resource> <gargetPath>/</targetpath> <directory> $ {project.build.build.directory} </directory> <clude> $ {project.build.finalname} .jar}. </configuration> </plugin> </plugins> </build>다른 단계는 동일합니다. 이런 식으로 Dockerfile을 사용하여 Docker 이미지를 만들 수 있습니다.
DockerHub에서 Docker Image를 누릅니다
먼저 Maven의 Global Configuration File Settings.xml을 수정하고 다음 단락 추가
<서버> <server> <id> docker-hub </id> <username> dockerhub username </username> <spadmply> dockerhub password </password> <configuration> <email> dockerhub mailbox </email> </configuration> </server> </servers>
DockerHub에서 Repo를 만듭니다
Project POM.XML은 다음으로 수정됩니다. ImageName의 경로는 Repo 경로와 일치해야합니다.
<빌드> <플러그인> <!-Docker 's Maven 플러그인, 공식 웹 사이트 : https://github.com/spotify/docker-maven-plugin-> <flugin> <groupid> com.spotify </groupid> <artifactid> docker-maven-plugin </artifactid> 0.4.12 <! 일반적인 [A-Z0-9-_.], 그렇지 않으면 빌드는 성공하지 못합니다-> <!-https://github.com/spotify/docker-maven-plugin 유효하지 않은 저장소 이름 만 참조하십시오 ... [a-z0-9-_.]는 허용됩니다-> <! <ImageName> eacdy/test </imagename> <!-dockerfile이 위치한 경로를 지정합니다-> <dockerdirectory> $ {project.basedir}/src/main/docker </dockerdirectory> <resources> <Resource> <TargetPath>/</targetpath> <directory> $ {project.build.directory} </directory}. <clude> $ {project.build.finalname} .jar </include> </resource> </resources> <!- 다음 두 줄은 docker 푸시에 DockerHub로 사용됩니다. -> <serverid> docker-hub </serverid> <greistryUrl> https://index.docker.io/v1/ </registryurl> </configuration> </plugin> </plugins> </build> 명령 실행 :
MVN Clean Package Docker : 빌드 -dpushimage
건설이 성공하면 Docker 이미지가 DockerHub로 밀려났다는 것을 알게 될 것입니다.
이미지를 개인 저장소로 푸시하십시오
많은 시나리오에서는 거울을 개인 저장소로 밀어야합니다. 종합성을 설명하기 위해 개인 저장소는 로그인 인증을 구성하는 개인 저장소를 사용합니다.
DockerHub로 푸시하는 것과 마찬가지로 먼저 Maven의 글로벌 구성 파일 설정을 수정하고 다음 단락을 추가해야합니다.
<servers> <server> <id> docker-registry </id> <username> dockerhub username </username> <spadmply> dockerhub password </password> <configuration> <email> dockerhub 메일 박스 </email> </configuration> </server> </servers>
프로젝트의 pom.xml을 다음과 같이 변경하십시오.
<flugin> <groupid> com.spotify </groupid> <artifactid> docker-maven-plugin </artifactid> <버전> 0.4.12 </version> <configuration> <!-경로는 다음과 같습니다. <DockerDirectory> $ {project.basedir}/src/main/docker </dockerdirectory> <resource> <parterpath>/</targetpath> <directory> $ {project.build.directory} </driergory> <conlude> $ {project.build.finalname}. maven configuration file settings.xml-> <serverid> docker-registry </serverid> </configuration> </plugin> 구현하다:
MVN Clean Package Docker : 빌드 -dpushimage
잠시 기다리면 성공할 것입니다.
개인 서버에서 이미지를 다운로드하려면 다음을 수행하십시오.
Docker login reg.itmuch.com # 그런 다음 계정 번호 및 비밀번호를 입력하십시오. Docker Pull Reg.itmuch.com/test-pull-registry
플러그인을 바인딩하여 단계에서 실행하십시오
많은 시나리오에서, 우리는 예를 들어 MVN Clean 패키지를 실행할 때 Docker 이미지를 자동으로 빌드 할 것입니다. 괜찮아? 대답은 예입니다. 플러그인의 목표를 특정 단계에 바인딩하면됩니다.
소위 단계와 목표는 다음과 같이 이해 될 수 있습니다. Maven 명령 형식은 다음과 같습니다. MVN 단계 : 목표, 예를 들어 MVN 패키지 Docker : Build, Package 및 Docker는 모두 단계이며 빌드는 목표입니다.
예는 다음과 같습니다.
먼저 속성을 구성합니다.
<properties> <docker.image.prefix> reg.itmuch.com </docker.image.prefix> </properties>
플러그인 구성 :
<빌드> <Plugins> <Plugin> <groupId> com.spotify </groupId> <artifactid> docker-maven-plugin </artifactid> <executions> <executions> <executions> <id> build-image </id> <phase> 패키지 </phase> <goal </build> </goving> </execution> </configution> </configation> <ImageName> $ {docker.image.prefix}/$ {project.artifactID} </imageName> <Sava <baseImage> java </baseImage> <entyPoint> [ "java", "-jar", "/$ {project.build.finalname} .jar"<racples> <warlingce>/</entrypopt> <Directory> $ {project.build.directory} </directory> <clander> $ {project.build.finalname} .jar </include> </resource> </resources> </configuration> </plugin> </plugins> </build>위와 같이, 우리는 다음을 추가하기 만하면됩니다.
<executions> <execution> <id> build-image </id> <case> 패키지 </phase> <goging> <goal> 빌드 </goal> </govent> </execution> </executions>
그냥 해요. 이 예제는 패키지 단계에 바인딩 된 Docker의 빌드 대상을 나타냅니다. 즉, 사용자는 MVN 패키지 만 실행하고 MVN Docker : Build를 자동으로 실행하면됩니다.
일반적인 예외
2375에 연결할 수 없습니다 (보통 Win7)
코드 사본은 다음과 같습니다.
LocalHost에 연결 : 2375 [LocalHost/127.0.0.1, LocalHost/0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 1] 실패 : 연결 거부 : Connect-> [Help 1]
해결책 단계 :
Docker-Machine Env를 입력하십시오
$ Env : Docker_Tls_verify = "1"$ Env : docker_host = "tcp : //192.168.99.100 : 2376"$ env : docker_cert_path = "c : /users/administrator/.docker/machine/machines/default
플러그인에 대한 구성을 추가하십시오
<!-LocalHost : 2375에 연결하는 문제를 해결하는 방법 중 하나, docker-machine env--> <dockerhost> https://192.168.99.100:2376 </dockerhost> <dockercertpath> c : /users/administator/.docker/machine/machine/machine/machine/machine/machine/machine/machine/machine/machine/machine/machine/machine/machine/machine/machine/machine/machine/machine/machine.
수정 후 플러그인 구성이 다음과 같습니다.
<flugin> <groupid> com.spotify </groupid> <artifactid> docker-maven-plugin </artifactid> <버전> 0.4.12 </version> <imageation> <imagename> eacdy/test </imagename> <dockerdirectory> $ {project.basedir}/main/main/docker <! LocalHost : 2375에 연결하는 문제, Docker-Machine Env-> <dockerhost> https://192.168.99.100:2376 </dockerhost> <dockercertpath> c : /users/administrator/.docker/machine/default </dockercertpute> <resourt> <resourt> <gargetPath>/</targetpath> <directory> $ {project.build.directory} </directory> </directory> <clude> $ {project.build.finalname} .jar </include> </resource> </resources> <! -> <serverid> docker-hub </serverid> <greistryUrl> https://index.docker.io/v1/ </registryurl> </configuration> </plugin> 참조 : https://github.com/spotify/docker-maven-plugin/issues/116
팁
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.