D: 도커 컴포즈(Docker Compose)는 멀티 컨테이너 도커 애플리케이션을 정의하고 실행하기 위한 필수 도구입니다! ✨ 단순한 YAML 파일 작성만으로 복잡한 컨테이너 환경을 한 번에 관리할 수 있는 마법 같은 도구인데요, 오늘은 초보자도 쉽게 따라할 수 있도록 A부터 Z까지 상세하게 알려드리겠습니다.
1. 🔍 Docker Compose란 무엇인가요?
- 정의: 여러 개의 도커 컨테이너를 하나의 파일(
docker-compose.yml
)로 정의하고 관리하는 도구 - 장점:
- 단일 명령어(
docker-compose up
)로 모든 서비스 시작 가능 🚀 - 컨테이너 간의 네트워크, 볼륨, 의존성 관계를 쉽게 설정
- 개발/테스트/프로덕션 환경을 일관되게 유지
- 단일 명령어(
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
db:
image: postgres:13
environment:
POSTGRES_PASSWORD: example
2. 📝 YAML 문법 완벽 이해
도커 컴포즈 파일은 YAML 형식으로 작성됩니다. 기본 구조를 익혀봅시다!
기본 구조
version: "3.8" # 사용할 컴포즈 버전
services: # 컨테이너 서비스 정의
서비스명1:
image: ...
ports: ...
서비스명2:
build: ...
depends_on: ...
volumes: # 볼륨 정의
networks: # 네트워크 정의
자주 사용하는 주요 옵션
옵션 | 설명 | 예시 |
---|---|---|
image |
사용할 도커 이미지 | nginx:alpine |
build |
Dockerfile로 빌드 | context: . |
ports |
포트 매핑 | "8080:80" |
volumes |
볼륨 마운트 | ./data:/var/lib/mysql |
environment |
환경 변수 | MYSQL_ROOT_PASSWORD: 1234 |
depends_on |
의존성 설정 | - db |
3. 🛠️ 실전 예제로 배우기
3.1 웹 애플리케이션 + DB 구성
version: "3.8"
services:
frontend:
build: ./frontend
ports:
- "3000:3000"
depends_on:
- backend
backend:
build: ./backend
ports:
- "8000:8000"
environment:
DB_HOST: db
db:
image: postgres:13
volumes:
- db_data:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: secret
volumes:
db_data:
3.2 로드 밸런서 추가
version: "3.8"
services:
web:
image: nginx
deploy:
replicas: 3
lb:
image: dockercloud/haproxy
ports:
- "80:80"
depends_on:
- web
4. 🚀 고급 기능 활용하기
4.1 환경 변수 사용 (.env 파일)
# .env 파일
DB_PASSWORD=super_secret
TAG=latest
# docker-compose.yml
db:
image: postgres:${TAG}
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
4.2 멀티 스테이지 빌드
services:
app:
build:
context: .
target: production
ports:
- "5000:5000"
5. ⚙️ 배포 전략
5.1 프로덕션 배포
# 프로덕션용 컴포즈 파일 실행
docker-compose -f docker-compose.prod.yml up -d
# 서비스 스케일 조정
docker-compose up -d --scale web=5
5.2 Docker Swarm 모드
# 스웜 초기화
docker swarm init
# 스택 배포
docker stack deploy -c docker-compose.yml myapp
6. 🚨 주의사항 & 팁
- 버전 호환성: 도커 엔진 버전과 컴포즈 버전 확인 필수!
- 리소스 제한:
mem_limit
,cpus
옵션으로 자원 제한 설정 - 로그 관리:
docker-compose logs -f
로 실시간 로그 확인 - 정리 명령:
docker-compose down -v
로 완전 삭제
# 유용한 명령어 모음
docker-compose up -d # 백그라운드 실행
docker-compose ps # 실행 중인 서비스 확인
docker-compose stop # 서비스 정지
docker-compose restart # 서비스 재시작
마치며 ✨
도커 컴포즈는 현대적인 애플리케이션 개발에 없어서는 안 될 필수 도구입니다! 이 가이드를 통해 YAML 작성법부터 고급 배포 전략까지 모두 마스터하셨기를 바랍니다. 🎉
궁금한 점이 있으면 언제든 댓글로 질문해주세요! 여러분의 도커 여정을 응원합니다 💪
#도커 #Docker #DevOps #컨테이너 #개발환경