Node.js / Spring / Django 예제 docker-compose.yml 가이드

 

도커를 활용한 개발 환경 구성은 이론보다 실제 예제를 통해 이해하는 것이 훨씬 효과적입니다. 특히 Colima 기반 도커 환경에서는 docker-compose를 활용해 여러 서비스를 묶어 실행하는 방식이 실무에서 가장 많이 사용되고 있습니다.

Node.js / Spring / Django 예제 docker-compose.yml을 주제로, 각 프레임워크별로 최소 구성부터 실행 흐름을 정리했습니다.

 

 

실습 환경 공통 조건

  • macOS + Colima 기반 도커 환경
  • Docker CLI 및 docker compose 사용 가능 상태
  • 각 프로젝트는 독립 실행 기준

아래 예제들은 모두 docker compose up 명령으로 바로 실행 가능하도록 구성돼 있습니다.

1) Node.js 예제 docker-compose.yml

Node.js는 도커 실습에서 가장 많이 사용되는 예제입니다. 간단한 웹 서버를 기준으로 구성했습니다.

프로젝트 구조 예시

node-app/
 ├─ Dockerfile
 ├─ package.json
 ├─ index.js
 └─ docker-compose.yml

Dockerfile 예제

FROM node:20-alpine
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
CMD ["node", "index.js"]

docker-compose.yml

version: "3.9"
services:
  node-app:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - ./index.js:/app/index.js

이 구성은 소스 코드 변경 시 컨테이너를 재빌드하지 않아도 바로 반영되는 구조입니다.

2) Spring Boot 예제 docker-compose.yml

Spring Boot는 JVM 기반 특성상 Node.js보다 리소스 사용량이 높은 편입니다. 따라서 기본적인 메모리 설정을 함께 고려하는 것이 좋습니다.

프로젝트 구조 예시

spring-app/
 ├─ Dockerfile
 ├─ build.gradle
 ├─ src/
 └─ docker-compose.yml

Dockerfile 예제

FROM eclipse-temurin:17-jdk-alpine
WORKDIR /app
COPY build/libs/app.jar app.jar
ENTRYPOINT ["java","-jar","/app/app.jar"]

docker-compose.yml

version: "3.9"
services:
  spring-app:
    image: spring-app:local
    build: .
    ports:
      - "8080:8080"
    environment:
      - JAVA_OPTS=-Xms256m -Xmx512m

Spring Boot 컨테이너는 메모리 옵션을 명시하지 않으면 로컬 환경에서 불필요한 리소스를 점유할 수 있습니다.

3) Django 예제 docker-compose.yml

Django는 Python 기반 웹 프레임워크로, 도커 실습에서는 DB와 함께 구성하는 경우가 많습니다. 아래 예제는 PostgreSQL을 함께 사용하는 구성입니다.

프로젝트 구조 예시

django-app/
 ├─ Dockerfile
 ├─ requirements.txt
 ├─ manage.py
 ├─ app/
 └─ docker-compose.yml

Dockerfile 예제

FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python","manage.py","runserver","0.0.0.0:8000"]

docker-compose.yml

version: "3.9"
services:
  web:
    build: .
    ports:
      - "8000:8000"
    volumes:
      - .:/app
    depends_on:
      - db

  db:
    image: postgres:15
    environment:
      POSTGRES_USER: django
      POSTGRES_PASSWORD: django
      POSTGRES_DB: django_db
    volumes:
      - db_data:/var/lib/postgresql/data

volumes:
  db_data:

DB 데이터는 named volume으로 분리해 컨테이너 재시작 시에도 유지되도록 구성했습니다.

공통 실행 명령어

# 컨테이너 실행
docker compose up -d

# 실행 상태 확인
docker ps

# 로그 확인
docker compose logs -f

# 종료 및 정리
docker compose down

프레임워크별 구성 차이 요약

구분 Node.js Spring Boot Django
실행 속도 빠름 보통 보통
리소스 사용 낮음 높음 중간
DB 연계 선택 선택 필수적

 

 

FAQ

Q1. Colima 환경에서도 docker-compose 성능 문제는 없나요?

A. 기본 실습 수준에서는 큰 문제 없이 사용 가능하며, 파일 동기화 범위를 줄이면 체감 성능이 개선됩니다.

Q2. 예제 그대로 실무에 사용해도 되나요?

A. 구조 이해와 로컬 개발용으로는 충분하지만, 운영 환경에서는 보안·빌드 전략을 별도로 고려해야 합니다.

Q3. 세 프레임워크를 하나의 compose로 묶어도 되나요?

A. 가능하지만 학습 목적이라면 프레임워크별로 분리해 구성하는 것이 관리에 유리합니다.

 

 


 

 

Node.js / Spring / Django 예제 docker-compose.yml은 각 개발 환경에서 도커 활용 방식을 이해하는 데 효과적인 출발점입니다. Colima 기반 맥북 개발환경에서도 위 예제들을 그대로 활용할 수 있으며, 프로젝트 규모에 맞게 점진적으로 확장해 나가는 것이 좋습니다.