[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_USERNAME
과DOCKER_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
탭에서 워크플로 실행 결과를 확인할 수 있습니다.
Comments powered by Disqus.