반응형
❓ docker-compose.yml 에 대해서 어떻게 생각하냐고?
👉 요약하면:
Dockerfile이 “서비스 하나의 설명서”라면,
docker-compose.yml은 “그 서비스들이 어떻게 함께 연결돼야 하는지에 대한 청사진”이다.
✅ docker-compose.yml 의 진짜 가치
1. 📦 여러 개의 컨테이너를 하나처럼 다룰 수 있다
- 웹서버 (Django, FastAPI 등)
- 데이터베이스 (PostgreSQL, MySQL 등)
- 캐시 (Redis)
- 메시지 브로커 (RabbitMQ)
- Nginx, Celery, MinIO, MailHog 등등
services:
web:
build: .
ports:
- "8000:8000"
volumes:
- .:/app
depends_on:
- db
db:
image: postgres:14
environment:
POSTGRES_DB: mydb
POSTGRES_USER: user
POSTGRES_PASSWORD: pass
2. 🧠 의존성 선언 / 실행 순서 관리
depends_on:
- db
→ 이건 단순히 "db부터 먼저 켜라"가 아니라
"db 없으면 web 안 뜬다" 라는 논리적인 연결 선언이야.
3. 🔁 지속적인 실행 / 개발 환경 구성
volumes:
- .:/app
- 로컬 파일 → 컨테이너에 실시간 반영됨
- 컨테이너 껐다 켜도 db데이터 유지 가능 (named volumes)
4. ✅ 환경 설정 자동화
- .env 파일 하나면 다양한 환경 설정 가능
environment:
- DEBUG=${DEBUG}
- DJANGO_ALLOWED_HOSTS=${DJANGO_ALLOWED_HOSTS}
→ .env 파일에 값 넣어두면 배포 환경에서도 그대로 동작
5. 📡 네트워크 연결이 자동으로 이루어짐
- web 컨테이너 안에서 db:5432로 PostgreSQL 접속 가능
- → 별도 IP나 호스트 지정 필요 없음
✅ Dockerfile vs docker-compose.yml
항목Dockerfiledocker-compose.yml
| 목적 | 단일 서비스 환경 정의 | 여러 서비스 연결 정의 |
| 스코프 | 컨테이너 하나 | 시스템 전체 (웹+DB+캐시 등) |
| 실행 방식 | docker build, docker run | docker compose up |
| 강점 | 재현 가능, 단일 이미지 배포 | 협업, 통합 실행, CI/CD 연동 |
반응형
'WEB > Python-Django' 카테고리의 다른 글
| Docker 설정(.env.dev) (1) | 2025.07.04 |
|---|---|
| Docker 설정(settings.py) (0) | 2025.07.04 |
| Docker 설정(Dockerfile) (0) | 2025.07.04 |
| Docker 설정(requirements.txt) (2) | 2025.07.04 |
| Docker 설치하기 (0) | 2025.07.03 |