DevOps 환경에서 CI/CD(지속적 통합/지속적 배포) 파이프라인을 구축하는 것은 소프트웨어 개발과 배포의 효율성을 크게 향상시킬 수 있습니다. 이 글에서는 Docker를 활용하여 간단한 CI/CD 파이프라인을 구축하는 방법을 단계별로 설명하겠습니다.

Docker의 개요

Docker는 컨테이너 기반의 가상화 기술로, 애플리케이션을 격리된 환경에서 실행할 수 있게 해줍니다. Docker를 사용하면 애플리케이션의 종속성 문제를 해결하고 일관된 배포 환경을 제공할 수 있습니다. CI/CD 파이프라인과 결합하면, 개발자가 코드 변경을 자동으로 빌드, 테스트 및 배포할 수 있는 환경을 제공합니다.

CI/CD 파이프라인 개요

CI/CD 파이프라인은 일반적으로 다음과 같은 단계를 포함합니다:

  1. 소스 코드 관리: 코드 변경 사항이 원격 저장소에 푸시됩니다.
  2. 빌드: 코드가 자동으로 빌드되어 컨테이너 이미지가 생성됩니다.
  3. 테스트: 자동화된 테스트가 실행되어 코드의 품질을 검증합니다.
  4. 배포: 성공적으로 테스트를 통과한 이미지를 프로덕션 환경에 배포합니다.
  5. 이제 이 과정들을 Docker와 GitHub Actions를 사용하여 구현해보겠습니다.

    준비 사항

  6. Docker 설치: Docker가 설치되어 있어야 합니다. Docker 공식 사이트에서 설치 방법을 확인하세요.
  7. GitHub 계정: GitHub에 레포지토리를 만들어야 합니다.
  8. 1단계: Dockerfile 작성

    먼저, Dockerfile을 작성하여 애플리케이션의 Docker 이미지를 정의합니다. 아래는 Node.js 애플리케이션을 위한 간단한 Dockerfile 예제입니다.

    FROM node:14
    
    # 작업 디렉토리 설정
    WORKDIR /app
    
    # 패키지 파일 복사
    COPY package*.json ./
    
    # 의존성 설치
    RUN npm install
    
    # 소스 코드 복사
    COPY . .
    
    # 애플리케이션 시작
    CMD ["node", "app.js"]

    위 코드는 Node.js 애플리케이션을 위한 기본적인 Dockerfile입니다. 여러분의 애플리케이션에 맞게 수정하여 사용하세요.

    2단계: GitHub Actions 설정

    이제 CI/CD 파이프라인을 구성하기 위해 GitHub Actions 설정 파일을 만들어야 합니다. .github/workflows/ci-cd.yml 파일을 생성하고 아래와 같이 작성합니다.

    name: CI/CD Pipeline
    
    on:
      push:
        branches:
          - main
    
    jobs:
      build:
        runs-on: ubuntu-latest
    
        steps:
          - name: 체크아웃 코드
            uses: actions/checkout@v2
    
          - name: Docker 이미지 빌드
            run: |
              docker build -t my-app .
    
          - name: Docker 테스트 실행
            run: |
              docker run my-app npm test
    
          - name: Docker 이미지 푸시
            uses: docker/build-push-action@v2
            with:
              context: .
              push: true
              tags: my-dockerhub-username/my-app:latest
            env:
              DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
              DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}

    위 예제는 다음을 수행합니다:

    • main 브랜치에 코드가 푸시될 때마다 실행됩니다.
    • 코드를 체크아웃하고, Docker 이미지를 빌드합니다.
    • 빌드된 Docker 이미지에서 테스트를 실행합니다.
    • Docker Hub에 이미지를 푸시합니다.
    • 3단계: 비밀 값 설정

      Docker Hub에 이미지를 푸시하기 위해 GitHub Secrets에 Docker Hub 사용자명과 비밀번호를 추가해야 합니다. GitHub 레포지토리의 Settings > Secrets and variables > Actions에서 새로운 Secret을 추가하세요.

    • DOCKER_USERNAME: Docker Hub 사용자명
    • DOCKER_PASSWORD: Docker Hub 비밀번호

4단계: CI/CD 파이프라인 실행

이제 모든 설정이 완료되었습니다. 코드 변경 사항을 main 브랜치에 푸시하면, GitHub Actions가 자동으로 CI/CD 파이프라인을 실행합니다. 성공적으로 실행되면 Docker Hub에서 새로운 이미지를 확인할 수 있습니다.

마무리

이 글에서는 Docker를 활용한 간단한 CI/CD 파이프라인 구축 방법을 소개했습니다. 이 파이프라인을 통해 코드 변경 사항이 자동으로 빌드, 테스트되고 배포되는 과정을 경험할 수 있습니다. 실제 프로젝트에 적용하여 효율성을 높여보세요. DevOps의 이점을 극대화하는 데 도움이 될 것입니다.