Maven 플러그 인 Docker 미 러 구축 실현 절차

5737 단어 MavenDocker거울 상
배경
마이크로 서비스 구조 에서 마이크로 서 비 스 는 좋 은 디자인 과 구조 이념 을 가 져 오 는 동시에 운영 상의 추가 복잡성 도 가 져 왔 다.특히 서비스 배치 와 서비스 모니터링 에 있어 서.단일 응용 은 집중 식 으로 하나의 단일 체 를 함께 달 리 는 것 으로 배치 와 관 리 를 할 때 매우 간단 하 다.한편,마이크로 서 비 스 는 그물 모양 으로 분포 되 어 있 고 많은 서 비 스 를 유지 하고 관리 해 야 하 며 이 를 배치 하고 유지 할 때 비교적 복잡 하 다.
다음은 Dev 의 관점 에서 Ops 의 작업 을 살 펴 보 겠 습 니 다.Dev 에서 코드 를 제출 하고 통합 테스트 를 완성 하 는 일련의 절 차 는 다음 과 같 습 니 다.
  • 먼저 개발 자가 프로그램 코드 를 업데이트 해서 Git 에 올 린 다음 에 다른 일 은 Jenkins 가 자동 으로 완성 합 니 다.
  • 그리고 Git 은 사용자 가 업데이트 한 코드 를 받 은 후에 메시지 와 임 무 를 Jenkins 에 전달 하고 Jenkins 는 자동 으로 하나의 임 무 를 구축 하여 Maven 과 관련 된 패 키 지 를 다운로드 합 니 다.다운로드 가 완료 되면 Maven Build 를 이용 하여 새로운 프로젝트 패 키 지 를 만 든 다음 Maven 용 기 를 재 구축 하여 새로운 Image 를 구축 하고 Docker 개인 라 이브 러 리 에 Push 합 니 다.
  • 마지막 으로 실행 중인 Docker 용 기 를 삭제 하고 새로운 미 러 를 기반 으로 Docker 용 기 를 다시 시작 하여 자동 으로 통합 테스트 를 완료 합 니 다.
  • 전체 과정 이 자동 적 이어서 원래 복잡 한 집적 작업 을 간소화 하고 하루 에 한 번,심지어 여러 번 집적 할 수 있다.

    본 고 는 주로 두 번 째 단 계 를 주목 하고 Dev 로 서 Maven 플러그 인 을 사용 하여 Docker 미 러 를 구축 합 니 다.
    절차
    환경.
    필자 의 컴퓨터 시스템 은 MacOS 로 다음 절 차 를 진행 하기 전에 먼저 조건 을 갖 추 었 다.
  • Docker Registry
  • Maven(3.5.0)
  • JDK(1.8.0_131)
  • Docker for Mac (17.09.0-ce-mac35)
  • Maven 과 JDK 는 너무 많이 가지 지 않 아 도 됩 니 다.가 져 야 합 니 다.Docker Registry 는 개인 적 인 hub 입 니 다.mac 에 docker 를 설치 한 후에 Docker Registry 의 주 소 를 설정 합 니 다.설정 은 다음 과 같 습 니 다.

    docker 는 기본적으로 개인 복 으로 https 지원 이 필요 하기 때문에 제 가 있 기 전에 개인 복 으로 https 지원 을 했 기 때문에 설정 할 필요 가 없습니다.
    pom 설정
    pom 파일 에 해당 하 는 플러그 인 을 도입 해 야 합 니 다.docker-maven-plugin 은 세 가지 가 있 습 니 다.spotify,fabric8io 와 bibryam 입 니 다.그 중에서 도 첫 번 째 모델 이 가장 유행 하고 자료 도 많아 서 첫 번 째 모델 을 선택 하 는 것 을 주저 하지 않 는 다.
    플러그 인 은 두 가지 사용 방식 이 있 습 니 다.하 나 는 pom 설정 에서 baseImage 와 entry Point 를 직접 지정 하 는 것 입 니 다.다른 하 나 는 복잡 한 구축 에 적합 합 니 다.dockerfile 을 사용 하려 면 설정 에서 dockerfile 의 위 치 를 지정 해 야 합 니 다.앞의 것 은 비교적 간단 합 니 다.여 기 는 생략 하고 두 번 째 설정 을 말씀 드 리 겠 습 니 다.
    
    <plugin>
           <groupId>com.spotify</groupId>
           <artifactId>docker-maven-plugin</artifactId>
           <version>${maven.docker.version}</version>
           <!--     phase-->
           <executions>
             <execution>
               <phase>install</phase>
               <goals>
                 <goal>build</goal>
               </goals>
             </execution>
           </executions>
           <configuration>
           <!--    ,    build、imageName、imageTag,    -->
             <skipDocker>${docker.skip.build}</skipDocker>
             <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
             <!--         tag,       -->
             <imageTags>
               <imageTag>${project.version}</imageTag>
               <imageTag>latest</imageTag>
             </imageTags>
             <forceTags>true</forceTags>         
             <env>
               <TZ>Asia/Shanghai</TZ>
             </env>
             <!--    -->
             <runs>
               <run>ln -snf /usr/share/zoneinfo/$TZ /etc/localtime</run>
               <run>echo $TZ > /etc/timezone</run>           
             </runs>
             <dockerDirectory>${project.basedir}</dockerDirectory>
             <resources>
               <resource>
                 <targetPath>/</targetPath>
                 <directory>${project.build.directory}</directory>
                 <include>${project.build.finalName}.jar</include>
               </resource>
             </resources>
             <!--push    hub-->
             <serverId>docker-registry</serverId>
           </configuration>
    
    </plugin>
    ${maven.docker.version},${docker.skip.build},${docker.image.prefix}모두 설정 가능 한 변수 입 니 다.${project.basedir},${project.build.directory},${project.build.finalName},${project.version}각각 프로젝트 루트 디 렉 터 리,구축 디 렉 터 리,포장 후 생 성 된 결과 이름,프로젝트 버 전 번호 에 대응 합 니 다.
    위의 pom 플러그 인 설정 은 dockerfile 의 위치 와 미 러 의 이름 규칙 을 지정 합 니 다.docker 의 build 목 표를 인 스타 그램 이라는 phase 에 연결 합 니 다.

    dockerfile
    
    FROM java:8
    
    COPY target/maven-docker-image-0.0.1-SNAPSHOT.jar /app.jar
    EXPOSE 8080
    ENTRYPOINT ["java","-jar" ,"/app.jar"]
    
    setting.xml
    pom 플러그 인 에 server Id 설정 이 있 습 니 다.이 설정 은 필요 합 니 다.이미 지 를 개인 hub 에 업로드 해 야 합 니 다.위 설정 과 같이-DpushImage 만 추가 하면 됩 니 다.server Id 는 maven 의 프로필 setting.xml 에 대응 하고 setting.xml 에 추 가 된 설정 입 니 다.
    
    <server>
     <id>docker-registry</id>
     <username>   </username>
     <password>  </password>
     <configuration>
      <email>  </email>
     </configuration>
    </server>
    결실


    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기