주녁, DevNote
article thumbnail
Published 2023. 1. 18. 22:50
Let's Go Docker (3) - 심화편 DevOps

지적과 댓글은 언제나 환영합니다!

 

1. 변경사항을 Docker로 자동 배포하기

변경사항을 감지하고 배포하려면

CI/CD 파이프라인 구축을 먼저 알아야한다.

 

CI/CD 파이프라인을 구축하는 방법은

버전 관리 플랫폼별로 다르다.

 

대표적으로 Github Action, Gitlab, Terraform 등이 있으나

Github Action으로 진행해보도록 하겠다.

 


1.1. Github Action을 이용한 CI/CD

 

Github는 사용자가 CI/CD 도구를 직접 통합해야 한다.

선택지로 Jenkins, CircleCI, TravisCI 등이 있다

 

필자는 현재 이 블로그도 Github Action으로 자동 배포하고 있다.

그 때의 빌드 스크립트 를 재활용해보자.

자세한 설명은 주석을 참고하자.

 

<code />
# 알아두기 중간중간 보이는 secret들은 저장소 내 환경변수로, Repository 상단 Settings > Secrets에서 설정할 수 있다.
<code />
name: App Deployment # 이 스크립트의 제목 # 어떤 행동을 할때마다 실행할지 on: # master, release/v*라는 이름의 브랜치에 push가 발생할 때마다 # ex) release/v0.1, release/v2.1.5 push: branches: - master - release/v* # feature, fix 브랜치에 pull_request가 발생할 때마다 pull_request: branches: - feature-* - fix-* # 실행할 작업을 순서대로 정의함 jobs: build: runs-on: ubuntu-latest steps: # 체크아웃 - name: checkout uses: actions/checkout@v3 # JDK 설치 - name: Set up JDK 11 uses: actions/setup-java@v3 with: java-version: '11' distribution: 'temurin' # DB 설정 파일 생성 # 중요 정보는 Github Secret에서 복사해온다. - name: make application-database.yaml run: | # create application-database.yaml cd ./src/main/resources # application-database.yaml 파일 생성 touch ./application-database.yaml # GitHub-Actions 에서 설정한 값을 application-database.yaml 파일에 쓰기 echo "${{ secrets.DATABASE }}" >> ./application-database.yaml shell: bash # gradle 빌드 # maven 빌드 : mvn package - name: Build with Gradle run: ./gradlew bootJar # 웹 이미지 빌드 및 도커허브에 push - name: web docker build and push run: | docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} docker build -t ${{ secrets.DOCKER_REPO }}/second-eyes-web . docker push ${{ secrets.DOCKER_REPO }}/second-eyes-web

위 스크립트를 Github Action을 통해 동작시키면

빌드 -> 배포 -> 도커 이미지화까지 한번에 처리할 수 있다.

추가적으로 실행까지 하려면 아래 Docker Compose 스크립트를 추가하면 된다.

Docker Compose의 개념이 생소할 수 있겠지만,

실행 정보까지 추가해주는 것으로 생각하면 좋다.

<code />
## docker compose up - name: executing remote ssh commands using password uses: appleboy/ssh-action@master with: host: ${{ secrets.HOST }} username: ubuntu key: ${{ secrets.KEY }} script: | sudo docker rm -f $(docker ps -qa) sudo docker pull ${{ secrets.DOCKER_REPO }}/second-eyes-web sudo docker pull ${{ secrets.DOCKER_REPO }}/second-eyes-nginx docker-compose up -d docker image prune -f




출처

wjdrbs96님 블로그

stalker5217님 블로그

rmswjdtn님 블로그

'DevOps' 카테고리의 다른 글

MSA Dockerizing (3) - 발전시키기  (0) 2023.01.19
MSA Dockerizing (2) - 다듬기  (0) 2023.01.19
MSA Dockerizing (1) - 시작하기  (0) 2023.01.19
Let's Go Docker (2) - 실습편  (0) 2023.01.18
Let’s Go Docker (1) - 개념편  (1) 2023.01.18
profile

주녁, DevNote

@junwork

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!