D:
도커 컴포즈(Docker Compose)는 여러 컨테이너를 한 번에 관리할 수 있는 강력한 도구입니다. 🐳 이 가이드에서는 YAML 문법 기초부터 실무에서 바로 쓸 수 있는 고급 설정까지 단계별로 설명합니다. 워드프레스+MySQL 연동, 로드 밸런서 구성 등 5가지 실전 예제로 복잡한 개념도 쉽게 이해할 수 있습니다. “도커 컴포즈 파일이 왜 필요한가요?”라는 질문부터 시작해보죠!
🔍 Docker Compose 기본 개념 이해
도커 컴포즈는 다중 컨테이너 애플리케이션을 정의하고 실행하기 위한 도구로, docker-compose.yml 파일에 모든 서비스 설정을 기록합니다. 단일 docker run 명령어로는 구현하기 어려운 복잡한 구성을 간편하게 관리할 수 있는 것이 핵심 장점입니다.
주요 기능 3가지
- ✅ 서비스 간 의존성 관리 (depends_on)
- ✅ 환경 변수 공유 (environment)
- ✅ 볼륨/네트워크 공유 설정
📝 YAML 파일 작성법
도커 컴포즈 파일은 들여쓰기(indentation)가 생명! 기본 구조를 알아봅시다.
version: '3.8' # 사용할 도커 컴포즈 버전
services: # 컨테이너 서비스 정의
web:
image: nginx:latest
ports:
- "80:80"
주요 필드 설명
필드 | 설명 | 예시 |
---|---|---|
build | Dockerfile 위치 지정 | build: ./app |
environment | 환경 변수 설정 | MYSQL_ROOT_PASSWORD: password |
🚀 실전 예제 5선
1. 워드프레스 + MySQL 연동
version: '3.8'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: root
volumes:
db_data:
2. 로드 밸런서 구성 (Nginx + 3개 웹 서버)
version: '3.8'
services:
web1:
build: ./webapp
environment:
- NODE_ID=1
web2:
build: ./webapp
environment:
- NODE_ID=2
nginx:
image: nginx
ports:
- "8080:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- web1
- web2
⚠️ 주의사항 & 트러블슈팅
- ❗
depends_on
은 컨테이너 실행 순서만 제어할 뿐, 서비스 준비 상태는 확인하지 않음 - ❗ 볼륨 사용 시 호스트와 컨테이너 간 권한 충돌 발생 가능 (특히 Linux/Mac)
- 💡
docker-compose config
명령으로 YAML 파일 검증 가능
🔮 고급 활용 팁
- 다중 컴포즈 파일 사용:
docker-compose -f base.yml -f prod.yml
- 환경별 변수 관리:
.env
파일 활용 - 리소스 제한:
mem_limit
,cpus
설정
## 결론 ##
이 가이드로 도커 컴포즈의 핵심 개념과 실무 적용법을 모두 익히셨습니다. 🎉 지금 바로 docker-compose up
명령어를 실행해 첫 번째 멀티 컨테이너 애플리케이션을 구동해보세요! 궁금한 점은 댓글로 남겨주시면 상세히 답변드리겠습니다. 다음 단계로는 도커 스웜이나 쿠버네티스 학습을 추천합니다.