카테고리 없음

GitHub Actions로 Docker 배포 자동화하기: 단계별 가이드

idea9329 2024. 9. 25. 00:06
반응형

 

소프트웨어 개발이 점점 복잡해지고 있는 현대에서는, 배포 자동화는 필수 요소입니다. 이를 통해 개발자는 수동 배포에 드는 시간을 절약하고, 더 중요한 기능 개발에 집중할 수 있습니다. 오늘은 GitHub Actions를 이용하여 Docker 기반 애플리케이션을 자동으로 빌드하고 배포하는 방법을 단계별로 알아보겠습니다.


1. GitHub Actions란?

GitHub Actions는 GitHub에서 제공하는 CI/CD(지속적 통합 및 배포) 도구입니다. GitHub Actions를 사용하면 코드를 푸시하거나 PR을 생성할 때마다 자동으로 빌드, 테스트, 배포를 수행할 수 있습니다. 특히 Docker 컨테이너 기반 애플리케이션을 자동으로 빌드하고 배포할 수 있어 많은 개발자들이 선호하는 솔루션입니다.


2. Docker를 사용한 배포 자동화의 이점

Docker는 컨테이너 기술을 이용해 애플리케이션을 일관된 환경에서 실행할 수 있도록 도와줍니다. Docker를 사용한 배포 자동화는 여러 장점을 제공합니다:

  • 일관된 배포 환경: 개발, 테스트, 프로덕션 환경을 동일하게 유지할 수 있습니다.
  • 확장성: Docker 이미지를 사용하여 손쉽게 여러 인스턴스로 확장할 수 있습니다.
  • 자동화: 배포 자동화를 통해 배포 시간을 절약하고, 실수를 방지할 수 있습니다.

3. GitHub Actions 설정: Docker 배포 자동화

1) 리포지토리 생성

먼저, GitHub 리포지토리를 생성합니다. 해당 리포지토리는 Docker 애플리케이션의 소스 코드를 포함하게 됩니다.

2) Dockerfile 작성

Docker 배포를 위해서는 Dockerfile이 필요합니다. Dockerfile은 애플리케이션을 어떻게 컨테이너 이미지로 빌드할지 정의하는 파일입니다. 간단한 Node.js 애플리케이션 예시로 Dockerfile을 작성해보겠습니다:

 

# 베이스 이미지 선택
FROM node:14

# 애플리케이션 디렉토리 설정
WORKDIR /usr/src/app

# 패키지 파일 복사 및 설치
COPY package*.json ./
RUN npm install

# 소스 코드 복사
COPY . .

# 포트 설정
EXPOSE 8080

# 애플리케이션 실행 명령어
CMD ["node", "app.js"]

 

3) GitHub Actions 워크플로우 파일 작성

이제 .github/workflows 디렉토리에 docker-deploy.yml 파일을 생성합니다. 이 파일은 Docker 이미지를 빌드하고, 컨테이너 레지스트리에 푸시하는 과정을 자동화합니다.

아래는 GitHub Actions를 이용한 Docker 배포 자동화 예시입니다:

name: Docker Image CI

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Check out the repository
      uses: actions/checkout@v2

    - name: Set up Docker Buildx
      uses: docker/setup-buildx-action@v1

    - name: Log in to Docker Hub
      run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin

    - name: Build and push Docker image
      run: |
        docker build -t your-dockerhub-username/your-app-name:latest .
        docker push your-dockerhub-username/your-app-name:latest

4) Docker Hub 설정

GitHub Actions가 Docker Hub에 이미지를 푸시하려면, Docker Hub 계정이 필요합니다. Docker Hub 계정을 만들고, DOCKER_USERNAMEDOCKER_PASSWORD를 GitHub 리포지토리의 Secrets에 추가해야 합니다.

  1. GitHub 리포지토리에서 Settings로 이동.
  2. Secrets 메뉴에서 새로운 시크릿 추가.
  3. DOCKER_USERNAME에 Docker Hub 사용자명, DOCKER_PASSWORD에 Docker Hub 비밀번호를 추가합니다.

5) 배포 자동화

이제 main 브랜치로 코드를 푸시하면, GitHub Actions가 자동으로 Docker 이미지를 빌드하고, Docker Hub에 푸시하게 됩니다. 푸시된 이미지는 원하는 서버에서 손쉽게 배포할 수 있습니다.


4. 무중단 배포 설정 (Optional)

GitHub Actions로 Docker 이미지를 자동으로 푸시한 후, 무중단 배포를 구현하고 싶다면 AWS ECSKubernetes와 같은 서비스를 활용할 수 있습니다. 예를 들어, AWS ECS에서는 기존 컨테이너를 대체하면서도 트래픽을 중단시키지 않는 방식으로 Docker 이미지를 배포할 수 있습니다.


5. 결론

GitHub Actions를 활용한 Docker 배포 자동화는 배포 프로세스를 빠르고 안전하게 만듭니다. 수동 배포에 비해 시간 절약과 안정성을 제공하며, Docker Hub와 연동하여 다양한 서버 환경에서 쉽게 배포가 가능합니다. 소프트웨어 개발의 효율성을 극대화하고 싶은 개발자라면, GitHub Actions로 배포 자동화를 설정해보세요.

이제 간단한 코드 푸시만으로도 배포가 완료되는 자동화된 워크플로우를 경험할 수 있습니다.

반응형