Node.js와 Docker: 컨테이너화된 개발 환경 구축

작성일 :

Node.js와 Docker: 컨테이너화된 개발 환경 구축

Node.js와 Docker를 사용하면 개발 환경을 쉽게 설정하고 관리할 수 있습니다. 이 글에서는 기본적인 개념에서부터 시작하여 실제로 개발 환경을 구축하고 테스트하는 방법까지 단계별로 설명합니다. 이를 통해 효율적이고 일관된 개발 환경을 만드는 방법을 배울 수 있을 것입니다.

Node.js 소개

Node.js는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임입니다. 서버 측 애플리케이션을 구축하는 데 자주 사용되며, 비동기 이벤트 주도 방식으로 인해 높은 성능과 확장성을 제공합니다. Node.js의 주요 특징은 다음과 같습니다:

  • 비동기 I/O: I/O 작업이 비동기로 처리되므로 고성능을 유지할 수 있습니다.
  • 싱글 스레드: 이벤트 루프를 사용하여 비동기 작업을 관리하며, 하나의 스레드로 모든 작업을 처리합니다.
  • NPM(Node Package Manager): 다양한 라이브러리와 도구를 쉽게 설치하고 관리할 수 있습니다.

Docker 소개

Docker는 소프트웨어를 컨테이너화하여 배포하고 실행할 수 있는 플랫폼입니다. 컨테이너는 애플리케이션과 그 의존성을 하나의 표준화된 패키지로 묶어, 어디서나 동일하게 실행될 수 있도록 합니다.

Docker의 주요 특징은 다음과 같습니다:

  • 경량화: 컨테이너는 일반적으로 가상 머신보다 더 가볍습니다.
  • 이식성: 컨테이너가 어디서나 실행될 수 있으므로 개발, 테스트, 프로덕션 환경에서 일관성을 유지할 수 있습니다.
  • 격리: 각 컨테이너는 독립적으로 실행되므로, 하나의 컨테이너가 다른 컨테이너에 영향을 주지 않습니다.

Node.js와 Docker 환경 설정

이제 실제로 Node.js 애플리케이션을 Docker 컨테이너에서 실행할 환경을 설정해 보겠습니다.

1. Node.js 애플리케이션 생성

먼저 간단한 Node.js 애플리케이션을 생성합니다. 프로젝트 디렉토리를 만들고 package.json 파일을 초기화합니다:

bash
mkdir my-node-app
cd my-node-app
npm init -y

이제 기본적인 Express 서버를 설정합니다. Express를 설치하고 index.js 파일을 생성합니다:

bash
npm install express

index.js 파일에 다음 코드를 입력합니다:

javascript
const express = require('express');
const app = express();
const port = 3000;

app.get('/', (req, res) => {
  res.send('Hello, World!');
});

app.listen(port, () => {
  console.log(`Server is running on http://localhost:${port}`);
});

2. Dockerfile 작성

Dockerfile은 Docker 이미지를 빌드하기 위한 설정 파일입니다. 프로젝트 루트 디렉토리에 Dockerfile을 생성하고 다음 내용을 추가합니다:

dockerfile
# 베이스 이미지 설정
FROM node:14

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

# 종속성 설치
COPY package*.json ./
RUN npm install

# 애플리케이션 소스 복사
COPY . .

# 애플리케이션 포트 노출
EXPOSE 3000

# 애플리케이션 시작 명령어
CMD [ "node", "index.js" ]

3. .dockerignore 파일 작성

Docker 이미지 빌드 시 필요 없는 파일을 제외하기 위해 .dockerignore 파일을 설정합니다:

plaintext
node_modules
npm-debug.log

4. Docker 이미지 빌드 및 실행

이제 Docker 이미지를 빌드하고 컨테이너를 실행합니다. 다음 명령어를 사용합니다:

bash
# 이미지 빌드
docker build -t my-node-app .

# 컨테이너 실행
docker run -p 3000:3000 -d my-node-app

이제 브라우저에서 http://localhost:3000으로 이동하면