[nodejs] Docker 컨테이너를 통한 Node.js 프로젝트의 CI/CD 파이프라인 구축

본 글에서는 Node.js 프로젝트의 Continuous Integration (CI) 와 Continuous Deployment (CD) 파이프라인을 구축하는 방법에 대해 알아보겠습니다. 이를 위해 Docker를 사용하여 환경을 표준화하고, 각 단계를 컨테이너 내에서 실행하여 일관된 빌드 및 배포를 보장할 것입니다.

목차

  1. Docker 환경 구성
  2. CI/CD 파이프라인 설정
  3. 결론

Docker 환경 구성

먼저, Node.js 프로젝트를 위한 Docker 이미지를 작성하고 Dockerfile을 이용하여 구성합니다. 이를 통해 프로젝트 실행 및 의존성 관리를 표준화할 수 있습니다.

아래는 Node.js 애플리케이션을 위한 간단한 Dockerfile의 예시입니다.

# Node.js 이미지 사용
FROM node:14

# 작업 디렉토리 설정
WORKDIR /usr/src/app

# 의존성 설치
COPY package*.json ./
RUN npm install

# 소스 코드 복사
COPY . .

# 애플리케이션 빌드
RUN npm run build

# 포트 노출
EXPOSE 3000

# 애플리케이션 실행
CMD ["npm", "start"]

위 예시는 Node.js 애플리케이션을 위한 Docker 이미지를 빌드하는 방법을 보여줍니다.

CI/CD 파이프라인 설정

이제 CI/CD 파이프라인을 설정하기 위해, 다음 단계를 따를 수 있습니다.

  1. CI 파이프라인: GitHub Actions, CircleCI, Jenkins 등의 도구를 사용하여 코드 푸시 시 자동으로 테스트를 수행하고 빌드합니다.

  2. CD 파이프라인: 빌드가 성공하면 Docker 이미지를 빌드하고, Docker 레지스트리에 업로드하여 배포합니다.

아래는 GitHub Actions를 사용하여 Node.js 프로젝트의 CI/CD를 수행하는 간단한 예시입니다.

name: CI/CD Pipeline

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Use Node.js
      uses: actions/setup-node@v2
      with:
        node-version: '14'
    - name: Install dependencies
      run: npm install
    - name: Run tests
      run: npm test
    - name: Build and push Docker image
      uses: docker/build-push-action@v2
      with:
        context: .
        push: true
        tags: username/app:latest

위 예시는 GitHub Actions를 사용하여 푸시 시 Node.js 프로젝트를 빌드하고 Docker 이미지를 빌드하여 레지스트리에 푸시하는 방법을 보여줍니다.

결론

Node.js 프로젝트의 CI/CD 파이프라인을 Docker 컨테이너를 활용하여 구축하는 방법에 대해 알아보았습니다. Docker를 사용하면 환경을 표준화할 수 있고, 각 단계를 일관되게 관리할 수 있어 빌드 및 배포 프로세스를 안정화할 수 있습니다.