Docker Compose V2 신기능
Docker Compose V2는 Go로 재작성되어 성능이 크게 향상되었고, profiles와 watch 같은 실용적인 기능이 추가되었습니다. 개발 환경 구성의 효율성을 한 단계 높일 수 있습니다.
Profiles로 환경별 서비스 관리
services:
app:
build: .
ports:
- "3000:3000"
depends_on:
- db
- redis
db:
image: postgres:16-alpine
environment:
POSTGRES_DB: myapp
POSTGRES_PASSWORD: secret
volumes:
- pgdata:/var/lib/postgresql/data
redis:
image: redis:7-alpine
adminer:
image: adminer
ports:
- "8080:8080"
profiles: [dev]
mailhog:
image: mailhog/mailhog
ports:
- "1025:1025"
- "8025:8025"
profiles: [dev]
prometheus:
image: prom/prometheus
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
profiles: [monitoring]
grafana:
image: grafana/grafana
ports:
- "3001:3000"
profiles: [monitoring]
test-db:
image: postgres:16-alpine
environment:
POSTGRES_DB: myapp_test
POSTGRES_PASSWORD: test
profiles: [test]
volumes:
pgdata:
Profiles 사용법
# 기본 서비스만 실행
docker compose up -d
# 개발 도구 포함
docker compose --profile dev up -d
# 여러 프로필 동시
docker compose --profile dev --profile monitoring up -d
# 환경 변수로 기본 프로필 설정
COMPOSE_PROFILES=dev docker compose up -d
Watch 모드 — 파일 변경 자동 반영
services:
app:
build:
context: .
dockerfile: Dockerfile
ports:
- "3000:3000"
develop:
watch:
- action: sync
path: ./src
target: /app/src
ignore:
- "**/*.test.ts"
- action: rebuild
path: ./package.json
- action: sync+restart
path: ./config
target: /app/config
# watch 모드 실행
docker compose watch
# 또는 백그라운드 실행 + watch
docker compose up -d --watch
멀티 스테이지 빌드와 조합
FROM node:20-alpine AS base
WORKDIR /app
COPY package*.json ./
FROM base AS development
RUN npm install
COPY . .
CMD ["npm", "run", "dev"]
FROM base AS build
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-alpine AS production
WORKDIR /app
COPY --from=build /app/dist ./dist
COPY --from=build /app/node_modules ./node_modules
CMD ["node", "dist/server.js"]
유용한 Compose V2 명령어
| 명령어 | 설명 |
|---|---|
| docker compose up --wait | 헬스체크 통과까지 대기 |
| docker compose alpha dry-run | 실행 전 시뮬레이션 |
| docker compose stats | 리소스 사용량 모니터링 |
| docker compose cp | 호스트-컨테이너 파일 복사 |
| docker compose config | 최종 합성된 설정 확인 |
| docker compose events | 실시간 이벤트 스트림 |
여러 Compose 파일 합성
# 기본 설정 + 환경별 오버라이드
docker compose -f docker-compose.yml \
-f docker-compose.dev.yml up -d
# docker-compose.dev.yml (오버라이드)
services:
app:
build:
target: development
volumes:
- .:/app
- /app/node_modules
environment:
- DEBUG=true
- NODE_ENV=development
- profiles는 하나의 Compose 파일로 dev/staging/prod를 관리할 수 있게 합니다
- watch 모드는 볼륨 마운트보다 성능이 좋고, macOS/Windows에서도 안정적입니다
depends_on에condition: service_healthy를 사용하면 순서 보장이 확실합니다- V2에서는
docker-compose대신docker compose(하이픈 없음)을 사용합니다
Docker Compose V2의 profiles와 watch는 개발 환경 관리를 크게 개선합니다. 특히 watch 모드는 로컬 개발 시 컨테이너와의 파일 동기화를 자동화하여 생산성을 높입니다.
댓글 0