Docker Compose는 여러 컨테이너로 구성된 애플리케이션을 YAML 파일 하나로 정의하고 실행하는 도구다. 개발 환경 설정, 로컬 통합 테스트, 소규모 프로덕션 배포에 폭넓게 사용된다.
기본 구조
yaml
# docker-compose.yml
version: "3.9"
services:
web:
build:
context: .
dockerfile: Dockerfile
ports:
- "3000:3000"
environment:
- NODE_ENV=development
- DATABASE_URL=postgresql://user:pass@db:5432/mydb
depends_on:
db:
condition: service_healthy
volumes:
- ./src:/app/src # 핫 리로드를 위한 소스 마운트
db:
image: postgres:16-alpine
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: pass
POSTGRES_DB: mydb
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U user -d mydb"]
interval: 10s
timeout: 5s
retries: 5
redis:
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
pgdata:
networks:
default:
name: myapp-network
핵심 명령어
bash
# 서비스 시작 (백그라운드)
docker compose up -d
# 특정 서비스 재빌드
docker compose up -d --build web
# 로그 확인
docker compose logs -f web
# 서비스 내 명령 실행
docker compose exec web sh
# 중지 및 볼륨 삭제
docker compose down -v
멀티 환경 설정
bash
# 기본 + 개발 오버라이드
docker compose -f docker-compose.yml -f docker-compose.dev.yml up
# 프로파일 활용
docker compose --profile tools up
관련 개념