# 운영 배포 (Traefik + momotogether.com)
# 대상 서버: 121.156.99.3 (Traefik v2.11 외부 네트워크 traefik-net 사용)
# 사용: docker compose -f docker-compose.prod.yml up -d --build
services:
  momo-erp:
    build:
      context: .
      dockerfile: Dockerfile
    image: momo-erp:latest
    container_name: momo-erp
    restart: always
    env_file:
      - .env.production
    volumes:
      # 업로드 이미지 영구 저장 — named volume 사용
      # (호스트 바인드 마운트 시 root 소유로 자동 생성되어 nextjs uid 1001 의 mkdir 권한 부족.
      #  named volume 은 이미지의 /data_storage 디렉토리(Dockerfile 에서 chown nextjs:nodejs)를
      #  볼륨 초기화 시 그대로 복제하므로 권한 문제 없음.)
      - momo_data_storage:/data_storage
      # 자가 배포: webhook 이 호스트의 deploy.sh 를 실행하기 위함
      - /var/run/docker.sock:/var/run/docker.sock
      - ./scripts/deploy.sh:/deploy/deploy.sh:ro
      # source 디렉토리를 컨테이너 안에서 git pull 하기 위해 호스트의 소스를 마운트
      - $PWD:/deploy/source
    networks:
      - traefik-net
    labels:
      - traefik.enable=true
      - traefik.docker.network=traefik-net
      - traefik.http.routers.momo-erp.rule=Host(`momotogether.com`) || Host(`www.momotogether.com`)
      - traefik.http.routers.momo-erp.entrypoints=websecure,web
      - traefik.http.routers.momo-erp.tls=true
      - traefik.http.routers.momo-erp.tls.certresolver=le
      - traefik.http.services.momo-erp.loadbalancer.server.port=3000

networks:
  traefik-net:
    external: true

volumes:
  momo_data_storage:
