Post

[Docker] 도커 CI(Docker CI)

✅ Docker CI: 컨테이너 이미지 빌드 자동화로 개발 속도 UP!

지난 포스팅에서는 Dockerfile을 통해 원하는 이미지를 직접 만들어 보았습니다. 이제는 이 이미지 빌드 과정을 자동화하여 개발 속도를 더욱 높여볼 차례입니다! 이번 포스팅에서는 Docker CI(Continuous Integration, 지속적인 통합) 개념을 이해하고, GitHub Actions를 활용하여 Docker CI 환경을 구축하는 방법을 살펴보겠습니다.

☑️ CI/CD, 그리고 Docker CI란?

  • *CI/CD(Continuous Integration/Continuous Deployment)**는 개발자가 코드 변경 사항을 자주 통합하고, 자동화된 빌드 및 테스트를 거쳐 운영 환경에 빠르게 배포하는 것을 의미합니다. 이를 통해 개발 주기를 단축하고, 버그를 조기에 발견하며, 사용자에게 새로운 기능을 신속하게 제공할 수 있습니다.

Docker CI는 CI/CD 파이프라인에서 Docker 이미지 빌드를 자동화하는 것을 의미합니다. 개발자가 코드를 변경하고 Git 저장소에 푸시할 때마다 자동으로 Docker 이미지를 빌드하고 테스트하여, 항상 최신 상태의 이미지를 유지할 수 있도록 합니다.

☑️ GitHub Actions: 워크플로 자동화 도구

GitHub Actions는 GitHub 저장소에서 발생하는 이벤트(예: 코드 푸시, 풀 리퀘스트 생성 등)에 따라 자동으로 워크플로를 실행하는 강력한 도구입니다. YAML 파일로 워크플로를 정의하고, 다양한 액션(Action)을 조합하여 빌드, 테스트, 배포 등 다양한 작업을 자동화할 수 있습니다.

☑️ GitHub Actions를 활용한 Docker CI 구성

이제 GitHub Actions를 사용하여 Node.js 애플리케이션의 Docker 이미지 빌드를 자동화하는 예제를 살펴보겠습니다.

1. Docker 이미지 빌드 및 Docker Hub에 푸시

  • 로컬 환경에서 Dockerfile을 사용하여 이미지를 빌드하고, Docker Hub에 푸시합니다.

2. Git 저장소 생성 및 코드 커밋

  • GitHub에 저장소를 생성하고, 로컬 프로젝트 코드를 커밋하고 푸시합니다.

3. GitHub Actions 워크플로 설정

  • 저장소의 Settings > Secrets > Actions 메뉴에서 DOCKER_HUB_USERNAMEDOCKER_HUB_PASSWORD 시크릿을 생성합니다.
  • .github/workflows 디렉토리를 생성하고, docker-image.yml 파일을 생성합니다.

4. docker-image.yml 파일 작성

name: Push Docker Image to Docker Hub on: push: branches: - 'master' tags: - '**' jobs: push: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Docker meta id: docker_meta uses: crazy-max/ghaction-docker-meta@v1 with: images: leecloudo/nodejs-ci tag-semver: | {{version}} {{major}}.{{minor}} - name: Set up QEMU uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Login to Docker Hub uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_HUB_USERNAME }} password: ${{ secrets.DOCKER_HUB_PASSWORD }} - name: Build and push Docker Image uses: docker/build-push-action@v4 with: context: . push: true tags: ${{ steps.docker_meta.outputs.tags }} labels: ${{ steps.docker_meta.outputs.labels }}

5. 코드 변경 및 푸시

  • 코드를 변경하고 커밋 후 푸시하면, GitHub Actions가 자동으로 실행되어 Docker 이미지를 빌드하고 Docker Hub에 푸시합니다.

6. 워크플로 실행 결과 확인

  • 저장소의 Actions 탭에서 워크플로 실행 결과를 확인할 수 있습니다.
This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.