D: 🚀 도커 컴포즈(Docker Compose)를 처음 접하는 분들을 위한 완벽 가이드
복잡한 멀티 컨테이너 애플리케이션을 쉽게 관리할 수 있는 Docker Compose의 핵심인 docker-compose.yml
파일의 구조를 차근차근 알아보겠습니다!
1. Docker Compose란?
“여러 컨테이너를 하나의 파일로 정의하고 관리하는 도구”
- 단일 호스트에서 여러 서비스(DB, 웹 서버, 캐시 등)를 YAML 파일로 한 번에 설정
docker run
명령어를 매번 입력할 필요 없음 → 생산성 ⬆️- 개발, 테스트, 배포 환경을 일관되게 유지
👉 예시 시나리오: 웹 애플리케이션(Python) + MySQL DB + Redis 캐시를 한 번에 실행!
2. YAML 파일 기본 구조 살펴보기
기본 템플릿은 다음과 같아요. 주석(#
)으로 각 부분을 설명했습니다!
version: "3.8" # Docker Compose 버전 (3.x 권장)
services: # 실행할 서비스(컨테이너) 목록
web: # 서비스 이름 (예: 웹 서버)
image: nginx:latest # 사용할 이미지
ports:
- "80:80" # 호스트:컨테이너 포트 매핑
volumes:
- ./html:/usr/share/nginx/html # 볼륨 마운트
db:
image: mysql:5.7
environment: # 환경 변수
MYSQL_ROOT_PASSWORD: my-secret-pw
3. 주요 섹션 상세 설명
🔹 version
- 의미: Docker Compose 파일 형식 버전
- 예시:
version: "3.8"
(최신 버전 사용 권장)
🔹 services
- 의미: 실행할 컨테이너들을 정의하는 곳
- 예시:
frontend: image: my-web-app:1.0 depends_on: # 의존성 설정 - backend
🔹 networks (선택 사항)
- 의미: 사용자 정의 네트워크 생성
- 예시:
networks: my-network: driver: bridge
🔹 volumes (선택 사항)
- 의미: 데이터 영구 저장을 위한 볼륨 설정
- 예시:
volumes: db-data: # 이름만 지정하면 도커가 자동 관리
4. 실전 예제: 웹 앱 + MySQL 구성
version: "3.8"
services:
app:
build: . # 현재 디렉토리의 Dockerfile로 빌드
ports:
- "5000:5000"
environment:
FLASK_ENV: development
mysql:
image: mysql:8.0
environment:
MYSQL_DATABASE: mydb
MYSQL_USER: user
MYSQL_PASSWORD: password
volumes:
- mysql-data:/var/lib/mysql # DB 데이터 보존
volumes:
mysql-data:
5. 주의사항 & 팁
⚠️ 들여쓰기에 유의하세요! YAML은 공백(스페이스 2칸 권장)으로 구조를 구분합니다.
💡 docker-compose up -d
로 백그라운드 실행, docker-compose down
으로 정리
🔥 docker-compose logs
로 로그 확인 가능
📌 마무리: 이제 docker-compose.yml
파일을 직접 작성해 보세요!
간단한 설정부터 시작해 점점 복잡한 시스템도 쉽게 관리할 수 있을 거예요. 🎉
✨ 도움이 되셨다면 공유해 주세요! 더 궁금한 점은 댓글로 남겨주시면 답변드립니다.