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)
이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.