D: 🚀 개발자라면 반드시 알아야 할 Docker Compose의 모든 것! 복잡한 멀티 컨테이너 애플리케이션을 단 몇 줄의 코드로 관리하는 비법을 공개합니다.
🔍 Docker Compose가 뭔가요?
Docker Compose는 여러 개의 Docker 컨테이너를 하나의 파일로 정의하고 관리할 수 있는 도구예요. 마치 오케스트라 지휘자처럼 관련된 컨테이너들을 조화롭게 관리해줍니다!
예를 들어볼게요.
- 웹 서버 (Nginx)
- 애플리케이션 서버 (Node.js)
- 데이터베이스 (MySQL) 이 3가지 서비스를 각각 따로 실행하는 대신, 한 번에 관리할 수 있답니다.
✨ 왜 Docker Compose를 써야 할까요?
- 간편한 설정 📝: 복잡한 docker run 명령어 대신 YAML 파일 하나로 끝!
- 일관된 환경 🔄: 개발, 테스트, 프로덕션 환경을 동일하게 유지
- 효율적인 관리 ⚡: 여러 서비스를 한 번에 시작/중지 가능
- 의존성 해결 🧩: 서비스 간 연결을 자동으로 처리
🛠️ 설치 방법 (이미 Docker가 설치되어 있다면)
# Linux/macOS
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# Windows (Docker Desktop 설치 시 자동 포함)
📂 기본 파일 구조
docker-compose.yml
파일이 핵심이에요! 기본 구조는 이렇습니다:
version: '3.8' # 사용할 compose 버전
services: # 관리할 서비스(컨테이너) 목록
web: # 웹 서비스
image: nginx:latest
ports:
- "80:80"
db: # 데이터베이스 서비스
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
🎯 실전 예제: WordPress + MySQL
진짜로 유용한 예제를 살펴볼게요!
version: '3.8'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
db_data: {}
이렇게 작성한 후 터미널에서 docker-compose up -d
명령어 하나면 WordPress와 MySQL이 자동으로 연결되어 실행됩니다! ✨
💡 자주 사용하는 명령어 모음
명령어 | 설명 | 예시 |
---|---|---|
up |
서비스 시작 | docker-compose up -d |
down |
서비스 중지 | docker-compose down |
ps |
실행 중인 서비스 확인 | docker-compose ps |
logs |
로그 확인 | docker-compose logs -f |
build |
이미지 재빌드 | docker-compose build |
🚨 주의사항 & 팁
- 버전 호환성 🔗: Docker Engine 버전과 Compose 파일 버전을 확인하세요
- 환경 변수 사용 🌱:
.env
파일로 민감한 정보 관리# .env 파일 예시 DB_PASSWORD=mysecretpassword
- 볼륨 활용 💾: 데이터 영구 저장을 위해 반드시 볼륨 사용
- 리소스 제한 ⚖️: 컨테이너 리소스 제한 설정
services: web: deploy: resources: limits: cpus: '0.50' memory: 512M
🏗️ 고급 기능
- 다중 Compose 파일 🧩:
-f
옵션으로 여러 파일 사용docker-compose -f docker-compose.yml -f docker-compose.prod.yml up
- 스케일링 📈: 서비스 복제본 실행
docker-compose up --scale web=3
- 프로파일 🏷️: 특정 환경에서만 서비스 실행
services: test: profiles: ["test"] image: busybox
❓ 자주 묻는 질문
Q: Docker Compose와 Kubernetes 차이가 뭐예요?
A: Compose는 단일 호스트용, Kubernetes는 클러스터 환경용입니다.
Q: 기존 Dockerfile과 함께 사용할 수 있나요?
A: 네! build
속성으로 Dockerfile 지정 가능합니다.
services:
web:
build: ./dir-with-Dockerfile
Q: Windows에서 경로 문제가 발생해요
A: 볼륨 경로를 WSL2 형식으로 변경하세요:
volumes:
- /c/path/to/folder:/container/path
🎉 마무리
Docker Compose는 현대적인 애플리케이션 개발에 꼭 필요한 도구예요! 이 가이드만 따라오시면 복잡한 멀티 컨테이너 환경도 쉽게 관리할 수 있을 거예요. 🎊
더 궁금한 점이 있다면 댓글로 남겨주세요! 여러분의 Docker Compose 성공기를 기다립니다. 👏
#Docker #Compose #DevOps #컨테이너 #개발도구