본 글에서는 Node.js 프로젝트의 Continuous Integration (CI) 와 Continuous Deployment (CD) 파이프라인을 구축하는 방법에 대해 알아보겠습니다. 이를 위해 Docker를 사용하여 환경을 표준화하고, 각 단계를 컨테이너 내에서 실행하여 일관된 빌드 및 배포를 보장할 것입니다.
목차
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 파이프라인을 설정하기 위해, 다음 단계를 따를 수 있습니다.
-
CI 파이프라인: GitHub Actions, CircleCI, Jenkins 등의 도구를 사용하여 코드 푸시 시 자동으로 테스트를 수행하고 빌드합니다.
-
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를 사용하면 환경을 표준화할 수 있고, 각 단계를 일관되게 관리할 수 있어 빌드 및 배포 프로세스를 안정화할 수 있습니다.