본문 바로가기
WEB/Python-Django

Docker설정(docker-compose.yml)

by DeveloperCat 2025. 7. 4.
반응형

❓ 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