[Gunicorn] 멀티 프로세스 아키텍쳐 Docker 활용 관련 - 100-hours-a-week/5-yeosa-wiki GitHub Wiki

1. Dockerfile

  • CMD 명령어 부분 달라짐
FROM python:3.10

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD ["gunicorn", "-c", "gunicorn.conf.py", "app.main:app"]


2. docker-compose.yml에 restart 정책 설정

version: "3.8"

services:
  fastapi:
    build: .
    ports:
      - "8000:8000"
    restart: always  # 🛠 마스터 프로세스가 다운되면 자동 재시작
    deploy:
      resources:
        limits:
          cpus: '2.00'
          memory: 2g
    environment:
      - GUNICORN_CMD_ARGS=--bind=0.0.0.0:8000
  • restart: always: 도커 레벨에서 마스터 프로세스 다운 시 전체 컨테이너 재시작
  • deploy.resources.limits: GCP나 기타 VM에서 과도한 사용 방지
  • docker-compose.yml을 통해 운영/배포 설정