Docker Compose 기본 구조
YAML
# docker-compose.yml
version: "3.9"
services:
app:
build:
context: .
dockerfile: Dockerfile.dev
ports:
- "3000:3000"
volumes:
- .:/app
- /app/node_modules # 컨테이너 node_modules 보호
environment:
- NODE_ENV=development
depends_on:
db:
condition: service_healthy
db:
image: postgres:16-alpine
environment:
POSTGRES_USER: dev
POSTGRES_PASSWORD: devpass
POSTGRES_DB: myapp
volumes:
- pg_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U dev"]
interval: 5s
timeout: 3s
retries: 5
redis:
image: redis:7-alpine
command: redis-server --save 60 1
volumes:
pg_data:자주 쓰는 Compose 명령어
Bash
docker compose up -d # 백그라운드 실행
docker compose up --build # 이미지 재빌드 후 실행
docker compose down -v # 컨테이너 + 볼륨 삭제
docker compose logs -f app # 특정 서비스 로그 팔로우
docker compose exec app bash # 컨테이너 셸 접속
docker compose ps # 서비스 상태 확인환경변수 파일 분리
Bash
# .env (git 제외)
DB_PASSWORD=secretpass
API_KEY=abc123
# docker-compose.yml
services:
app:
env_file:
- .env개발/프로덕션 설정 분리
Bash
# docker-compose.override.yml (개발용, git 제외 가능)
services:
app:
volumes:
- .:/app
command: npm run devBash
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d편집 안내 · Editorial Note
이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.
관련 공식 문서Docker 공식 문서 ↗
질문 & 답변 (Q&A)
이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.