Docker 및 Java Spring Boot[섹션 1: 지속적인 통합]

이 글은 처음 jaxenter년에 발표되었다.
이 강좌에서는 Docker를 위해 Java 응용 프로그램을 테스트하고 준비하는 데 도움을 주는 지속적인 통합과 납품을 배울 것입니다.
지속적인 통합(CI) 설정은 업데이트할 때마다 코드를 테스트합니다.이 실천은 강력한 피드백 순환을 만들어 오류를 도입하면 오류를 나타낸다.따라서 버그를 검색하지 않고 인코딩하는 데 더 많은 시간을 들일 수 있습니다.
모든 클라우드 공급업체에서 보편적으로 지원되기 때문에 Docker를 사용하여 패키지를 구성합니다.또한 Docker는 Kubernetes와 같은 고급 배포 요구 사항입니다.이 강좌의 두 번째 부분에서, 우리는 당신의 we can use Continuous Deployment (CD)를 배울 것입니다. 단추 하나만 누르면 새 버전을 Kubernetes에 배치할 수 있습니다.

준비 중


다음은 당신이 시작해야 할 사항 목록입니다.
  • 가장 선호하는 코드 IDE 및 Java SDK
  • A Docker Hub 계정 및 Docker
  • GitHub 계좌와 Git.
  • 우리 모든 것을 준비하자.우선, repository with the demo을 갈라서 당신의 기계에 복제합니다.
    이 응용 프로그램은 Java Spring Boot에서 구축된 것으로 일부 API 단점을 공개했다.이 항목에는 테스트, 데이텀 테스트 및 Docker 이미지 생성에 필요한 모든 것이 포함됩니다.

    지속적인 통합


    우리는 신호량을 Continuous Integration 해결 방안으로 사용할 것이다.우리의 CI/CD 워크플로우 일정은 다음과 같습니다.
  • Java 종속성을 다운로드합니다.
  • 구축 응용 프로그램 JAR.
  • 운행 테스트와 Jmeter 기준 테스트.하면, 만약, 만약...
  • Docker 이미지를 작성하여 Docker Hub로 밀어넣습니다.
  • 그러나 먼저 브라우저 Semaphore을 열고 GitHub를 등록합니다.이것은 두 개의 서비스를 연결할 것이다.무료 계정은 매월 1300분의 구축 시간을 포함한다.항목 옆에 있는 + (더하기 기호) 를 클릭하여 저장소를 신호량에 추가합니다.

    라이브러리에는 CI/CD 워크플로우 예가 있습니다.기존 구성을 사용하겠습니다.

    GitHub로 전송하면 신호 양에 CI/CD 파이프가 표시됩니다.빈 파일을 만들고 Git으로 푸시할 수 있습니다.
    $ touch some_file
    $ git add some_file
    $ git commit -m "add Semaphore"
    $ git push origin master
    
    또는 새 파일 만들기 버튼을 사용하여 GitHub에서 직접 실행합니다.

    워크플로우 편집 버튼을 클릭하여 최근 게시된 Workflow Builder UI를 봅니다.

    모든 파이프에는 이름과 에이전트가 있습니다.프록시는 작업에 동력을 제공하는 가상 기기 유형이다.신호량은 몇 개의 machine types을 제공했고 우리는 무료 e1-standard-2모델과 Ubuntu 18.04을 사용할 것이다.
    작업은 블록별로 그룹화된 CI/CD 프로세스 생명을 부여하는 명령을 정의합니다.구축 블록을 클릭하여 작업을 보려면 다음과 같이 하십시오.

    블록의 작업이 동시에 실행됩니다.한 블록의 모든 작업이 끝나면 다음 블록이 시작됩니다.
    첫 번째 작업은 의존 항목을 다운로드하고 테스트를 실행하지 않고 응용 프로그램 JAR을 구축합니다.
    checkout
    cache restore
    mvn -q package jmeter:configure -Dmaven.test.skip=true
    cache store
    
    이 블록은 일부 신호량의 도구상자 스크립트를 사용합니다. checkout은 복제 저장소에, cache은 Java 의존항을 저장하고 검색하는 데 사용됩니다.
    두 번째 블록에는 두 개의 테스트 작업이 있다.prologue에서 정의한 명령은 블록의 각 작업 전에 실행됩니다.
    checkout
    cache restore
    mvn -q test-compile -Dmaven.test.skip=true
    

    세 번째 블록은 응용 프로그램을 시작하고 기준 테스트를 실행합니다.
    java -version
    java -jar target/spring-pipeline-demo.jar > /dev/null &
    sleep 20
    mvn -q jmeter:jmeter
    mvn jmeter:results
    

    Docker Hub 자격 증명 저장


    암호를 안전하게 저장하기 위해 신호량은 secrets 기능을 제공했다.Docker Hub 사용자 이름과 암호를 사용하여 비밀을 만듭니다.신호 양은 이미지를 저장소로 전송해야 합니다.
  • 구성에서 기밀을 클릭합니다.
  • 새 암호 만들기 버튼을 누릅니다.
  • 사용자 이름과 비밀번호를 사용하여 "dockerhub"라는 비밀을 만듭니다.

  • 연속 제공


    데이텀 블록 옆에 있는 apromotion을 찾았습니다. 이것은 CI와 Dockerize 파이프를 연결합니다.프로모션 연결 파이핑을 사용하여 분기 워크플로우를 생성합니다.자동 업그레이드 옵션을 선택하여 생성을 자동으로 시작합니다.

    데모에는 Docker 이미지에 응용 프로그램을 패키지화하는 Dockerfile이 포함되어 있습니다.
    FROM openjdk:8-jdk-alpine
    ARG ENVIRONMENT
    ENV ENVIRONMENT ${ENVIRONMENT}
    COPY target/*.jar app.jar
    ENTRYPOINT ["java","-Dspring.profiles.active=${ENVIRONMENT}", "-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
    
    Dockerize 파이핑은 다음과 같은 블록 및 작업으로 구성됩니다.
  • Docker Hub 로그인
  • 최신 이미지 가져오기
  • 업데이트 코드
  • 으로 새 이미지 구축
  • 새 이미지 밀어넣기
  • mvn -q package -Dmaven.test.skip=true
    echo "$DOCKER_PASSWORD" | docker login  --username "$DOCKER_USERNAME" --password-stdin
    docker pull "$DOCKER_USERNAME"/semaphore-demo-java-spring:latest || true
    docker build --cache-from "$DOCKER_USERNAME"/semaphore-demo-java-spring:latest \
          --build-arg ENVIRONMENT="${ENVIRONMENT}" \
          -t "$DOCKER_USERNAME"/semaphore-demo-java-spring:latest .
    docker push "$DOCKER_USERNAME"/semaphore-demo-java-spring:latest
    

    테스트 이미지


    워크플로우 실행 버튼을 클릭하고 시작을 선택합니다.

    몇 분 후에 워크플로가 완료되고 응용 프로그램이 Docker Hub에 새 Docker 이미지가 있어야 합니다.

    이제 저장소에 기존 Docker 이미지가 있어야 합니다.한번 해볼게요.새로 만든 이미지를 컴퓨터로 가져오려면 다음과 같이 하십시오.
    $ docker pull YOUR_DOCKER_USER/semaphore-demo-java-spring:latest
    
    그런 다음 시스템에서 부팅:
    $ docker run -it -p 8080:8080 YOUR_DOCKER_USER/semaphore-demo-java-spring
    
    POST 요청을 사용하여 사용자를 생성할 수 있습니다.
    $ curl -w "\\n" -X POST \
        -d '{ "email": "[email protected]", "password": "sekret" }' \
        -H "Content-type: application/json" localhost:8080/users
    
    {"username":"[email protected]"}
    
    사용자를 만든 후 인증 및 보기 가능
    보안 웹 페이지:
    $ curl -w "\n" --user [email protected]:sekret localhost:8080/admin/home
    
    <!DOCTYPE HTML>
    <html>
    <div class="container">
    <header>
    <h1>
    Welcome <span>[email protected]</span>!
    </h1>
    </header>
    </div>
    
    로그인 페이지 localhost:8080/admin/home에서 사용 가능

    다음 정거장: Kubernetes


    Kubernete에 이미지를 배포하는 방법은 섹션 2를 참조하십시오.


    결론


    첫 번째 CI/CD 파이프가 설정되었습니다.이 시스템이 있으면 코드에서 작업할 수 있고 끊임없이 테스트하는 느낌에서 안전할 수 있다.
    다음 주 강좌의 두 번째 부분을 계속 지켜봐 주십시오. 우리는 Kubernetes 집단을 어떻게 연속적으로 배치하는지 알게 될 것입니다.
    너는 이 게시물이 유용하다고 생각하니?알려줘.❤️-또는🦄-다음은 ing!당신은 다른 강좌에 대해 어떤 문제나 건의가 있습니까?댓글로 알려주세요.
    읽어주셔서 감사합니다!

    좋은 웹페이지 즐겨찾기