D:
도커 컴포즈(Docker Compose)는 멀티 컨테이너 애플리케이션을 정의하고 실행하기 위한 필수 도구입니다. ✨ 이 가이드에서는 YML 파일 작성법부터 실무에서 바로 적용 가능한 예제까지 단계별로 설명합니다. 웹 서버, 데이터베이스, 캐시 시스템을 한 번에 띄워야 한다면? 지금 바로 시작해보세요! 🚀
🔍 Docker Compose 기본 구조 이해
모든 컴포즈 파일은 docker-compose.yml
이라는 이름으로 저장되며 3가지 핵심 섹션으로 구성됩니다:
version: "3.8" # 사용할 컴포즈 버전
services: # 컨테이너 서비스 정의
web:
image: nginx:latest
volumes: # 데이터 영속성 관리
db_data:
- version: 호환성을 위해 반드시 명시 (3.x 권장)
- services: 실행할 각 컨테이너의 상세 설정
- volumes/networks: 리소스 공유 설정
🚀 실전 예제 5가지
1. 웹 서버 + MySQL 연동
services:
frontend:
image: nginx:alpine
ports:
- "80:80"
depends_on:
- db
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: secret
2. 환경변수 파일(.env) 활용
보안 정보는 별도 관리가 필수입니다:
# .env 파일
DB_PASSWORD=super_secret
# docker-compose.yml
environment:
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
옵션 | 설명 | 예시 |
---|---|---|
ports | 포트 매핑 | “8080:80” |
volumes | 디렉토리 마운트 | “./app:/app” |
⚠️ 주의사항 & 트러블슈팅
- 버전 충돌: Docker Engine 버전과 Compose 파일 버전 호환성 확인
- 의존성 문제:
depends_on
은 컨테이너 실행 순서만 제어 - 자원 한계:
mem_limit
,cpus
로 리소스 제한 설정
💡 고급 활용 팁
- 다중 컴포즈 파일 사용:
-f docker-compose.prod.yml
- 확장 필드 활용:
x-env
로 설정 재사용 - 헬스체크 추가:
healthcheck
으로 서비스 상태 모니터링
## 결론 ##
이제 여러분도 도커 컴포즈로 복잡한 인프라를 단 몇 줄의 YML 코드로 관리할 수 있습니다! 🎉 실제 프로젝트에 바로 적용해보고, 공식 문서에서 config
, profiles
등 고급 기능도 탐색해보세요. 궁금한 점은 댓글로 남겨주시면 신속히 답변드리겠습니다. 👇
지금 당장 할 수 있는 액션:
1. 기존 Docker run 명령어를 compose 파일로 변환
2. Git에 docker-compose.yml 파일 커밋
3. 팀원들과 구성 공유