Docker 및 Java Spring Boot[섹션 1: 지속적인 통합]
12127 단어 microservicesdevopsdockerjava
이 강좌에서는 Docker를 위해 Java 응용 프로그램을 테스트하고 준비하는 데 도움을 주는 지속적인 통합과 납품을 배울 것입니다.
지속적인 통합(CI) 설정은 업데이트할 때마다 코드를 테스트합니다.이 실천은 강력한 피드백 순환을 만들어 오류를 도입하면 오류를 나타낸다.따라서 버그를 검색하지 않고 인코딩하는 데 더 많은 시간을 들일 수 있습니다.
모든 클라우드 공급업체에서 보편적으로 지원되기 때문에 Docker를 사용하여 패키지를 구성합니다.또한 Docker는 Kubernetes와 같은 고급 배포 요구 사항입니다.이 강좌의 두 번째 부분에서, 우리는 당신의 we can use Continuous Deployment (CD)를 배울 것입니다. 단추 하나만 누르면 새 버전을 Kubernetes에 배치할 수 있습니다.
준비 중
다음은 당신이 시작해야 할 사항 목록입니다.
이 응용 프로그램은 Java Spring Boot에서 구축된 것으로 일부 API 단점을 공개했다.이 항목에는 테스트, 데이텀 테스트 및 Docker 이미지 생성에 필요한 모든 것이 포함됩니다.
지속적인 통합
우리는 신호량을 Continuous Integration 해결 방안으로 사용할 것이다.우리의 CI/CD 워크플로우 일정은 다음과 같습니다.

라이브러리에는 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 사용자 이름과 암호를 사용하여 비밀을 만듭니다.신호 양은 이미지를 저장소로 전송해야 합니다.

연속 제공
데이텀 블록 옆에 있는 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 파이핑은 다음과 같은 블록 및 작업으로 구성됩니다.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를 참조하십시오.

Kubernetes 및 Java Spring Boot[섹션 2: 연속 배포]
토마스 페르난데스・ 20년 1월 30일・ 8분 읽기
#kubernetes
#java
#devops
#docker
결론
첫 번째 CI/CD 파이프가 설정되었습니다.이 시스템이 있으면 코드에서 작업할 수 있고 끊임없이 테스트하는 느낌에서 안전할 수 있다.
다음 주 강좌의 두 번째 부분을 계속 지켜봐 주십시오. 우리는 Kubernetes 집단을 어떻게 연속적으로 배치하는지 알게 될 것입니다.
너는 이 게시물이 유용하다고 생각하니?알려줘.❤️-또는🦄-다음은 ing!당신은 다른 강좌에 대해 어떤 문제나 건의가 있습니까?댓글로 알려주세요.
읽어주셔서 감사합니다!
Reference
이 문제에 관하여(Docker 및 Java Spring Boot[섹션 1: 지속적인 통합]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/semaphore/docker-and-java-spring-boot-part-1-continuous-integration-1mfl텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)