DevOps 환경에서 CI/CD(지속적 통합/지속적 배포) 파이프라인을 구축하는 것은 소프트웨어 개발과 배포의 효율성을 크게 향상시킬 수 있습니다. 이 글에서는 Docker를 활용하여 간단한 CI/CD 파이프라인을 구축하는 방법을 단계별로 설명하겠습니다.
Docker의 개요
Docker는 컨테이너 기반의 가상화 기술로, 애플리케이션을 격리된 환경에서 실행할 수 있게 해줍니다. Docker를 사용하면 애플리케이션의 종속성 문제를 해결하고 일관된 배포 환경을 제공할 수 있습니다. CI/CD 파이프라인과 결합하면, 개발자가 코드 변경을 자동으로 빌드, 테스트 및 배포할 수 있는 환경을 제공합니다.
CI/CD 파이프라인 개요
CI/CD 파이프라인은 일반적으로 다음과 같은 단계를 포함합니다:
- 소스 코드 관리: 코드 변경 사항이 원격 저장소에 푸시됩니다.
- 빌드: 코드가 자동으로 빌드되어 컨테이너 이미지가 생성됩니다.
- 테스트: 자동화된 테스트가 실행되어 코드의 품질을 검증합니다.
- 배포: 성공적으로 테스트를 통과한 이미지를 프로덕션 환경에 배포합니다.
- Docker 설치: Docker가 설치되어 있어야 합니다. Docker 공식 사이트에서 설치 방법을 확인하세요.
- GitHub 계정: GitHub에 레포지토리를 만들어야 합니다.
main브랜치에 코드가 푸시될 때마다 실행됩니다.- 코드를 체크아웃하고, Docker 이미지를 빌드합니다.
- 빌드된 Docker 이미지에서 테스트를 실행합니다.
- Docker Hub에 이미지를 푸시합니다.
DOCKER_USERNAME: Docker Hub 사용자명DOCKER_PASSWORD: Docker Hub 비밀번호
이제 이 과정들을 Docker와 GitHub Actions를 사용하여 구현해보겠습니다.
준비 사항
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 }}
위 예제는 다음을 수행합니다:
3단계: 비밀 값 설정
Docker Hub에 이미지를 푸시하기 위해 GitHub Secrets에 Docker Hub 사용자명과 비밀번호를 추가해야 합니다. GitHub 레포지토리의 Settings > Secrets and variables > Actions에서 새로운 Secret을 추가하세요.
4단계: CI/CD 파이프라인 실행
이제 모든 설정이 완료되었습니다. 코드 변경 사항을 main 브랜치에 푸시하면, GitHub Actions가 자동으로 CI/CD 파이프라인을 실행합니다. 성공적으로 실행되면 Docker Hub에서 새로운 이미지를 확인할 수 있습니다.
마무리
이 글에서는 Docker를 활용한 간단한 CI/CD 파이프라인 구축 방법을 소개했습니다. 이 파이프라인을 통해 코드 변경 사항이 자동으로 빌드, 테스트되고 배포되는 과정을 경험할 수 있습니다. 실제 프로젝트에 적용하여 효율성을 높여보세요. DevOps의 이점을 극대화하는 데 도움이 될 것입니다.