D: 도커 컴포즈(Docker Compose)는 여러 개의 컨테이너를 하나의 파일로 정의하고 관리할 수 있는 강력한 도구입니다. 초보자도 쉽게 따라할 수 있도록 단계별로 상세하게 설명드리겠습니다!
1. Docker Compose란? 🤔
- 멀티 컨테이너 애플리케이션을 YAML 파일(
docker-compose.yml
)로 정의 docker run
명령어를 매번 입력할 필요 없이 한 번에 모든 서비스 실행/중지 가능- 개발, 테스트, 프로덕션 환경에서 일관성 유지 ⚖️
예시 시나리오
웹 서버(Nginx), 데이터베이스(MySQL), 백엔드(Node.js)를 한 번에 띄워야 할 때 유용합니다.
2. 설치 확인 및 준비 사항 ✔️
- Docker 설치: 공식 사이트에서 Docker Desktop 설치
docker --version # Docker 버전 확인
- Docker Compose 설치 (최신 Docker에는 기본 포함)
docker-compose --version
3. docker-compose.yml
파일 작성 📝
기본 구조:
version: "3.8" # 사용할 Compose 버전
services: # 실행할 서비스(컨테이너) 목록
웹서비스명:
image: nginx:latest
ports:
- "80:80"
실전 예제: WordPress + MySQL
version: "3.8"
services:
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: mypassword
volumes:
- db_data:/var/lib/mysql
wordpress:
image: wordpress:latest
ports:
- "8000:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: mypassword
depends_on:
- db
volumes:
db_data:
4. 주요 명령어 실행하기 🚀
# 서비스 시작 (백그라운드 실행)
docker-compose up -d
# 실행 중인 서비스 확인
docker-compose ps
# 로그 보기 (특정 서비스만 보고 싶을 때)
docker-compose logs -f 웹서비스명
# 서비스 중지 (컨테이너 유지)
docker-compose stop
# 서비스 삭제 (컨테이너까지 제거)
docker-compose down
5. 고급 기능 활용하기 🔧
-
환경 변수 사용
.env
파일에 변수 저장 후docker-compose.yml
에서 참조:DB_PASSWORD=secret
environment: MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
-
빌드 컨텍스트 활용
직접 만든 Dockerfile로 이미지 빌드:services: app: build: ./app_directory # Dockerfile 경로
-
의존성 설정
depends_on
으로 서비스 시작 순서 제어:services: backend: depends_on: - db
6. 주의 사항 ⚠️
- 버전 호환성:
version
필드는 Docker Engine 버전과 맞출 것 - 포트 충돌: 호스트의 이미 사용 중인 포트 확인 (예: 80, 3306)
- 볼륨 권한: 데이터 영속화 시 권한 문제 발생할 수 있음
7. 실습 프로젝트 추천 💻
- 간단한 웹 앱: Flask + Redis
- 모니터링 시스템: Prometheus + Grafana
- 개발 환경: PHP + Apache + MariaDB
마무리 🌟
Docker Compose는 복잡한 인프라 설정을 코드로 관리할 수 있는 핵심 도구입니다. 이 가이드로 기본기를 익히고, 공식 문서와 커뮤니티 예제를 참고하면 금세 고수가 될 거예요!
궁금한 점은 댓글로 남겨주세요. 함께 성장해봐요! 💪
# 모든 서비스 한 번에 정리
docker-compose down --volumes # 볼륨까지 삭제
✨ Tip: VS Code의 Docker 확장 프로그램을 사용하면 더 편리하게 작업할 수 있습니다.