# docker-compose.prod.yml
# 운영 환경 설정
version: "3.8"

services:
  fems-admin:
    expose:
      - "3002"
    deploy:
      resources:
        limits:
          cpus: "0.50"
          memory: 512M
        reservations:
          cpus: "0.25"
          memory: 256M
    security_opt:
      - no-new-privileges:true
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.fems-admin.rule=Host(`${ADMIN_SUBDOMAIN}`)"
      - "traefik.http.routers.fems-admin.entrypoints=websecure"
      - "traefik.http.routers.fems-admin.tls=true"
      - "traefik.http.routers.fems-admin.middlewares=secured@file"
      - "traefik.http.services.fems-admin.loadbalancer.server.port=3000"
    volumes:
      - ../../wacefems/uploads:/app/uploads
    networks:
      - ${TRAEFIK_NETWORK}
      - internal
    command: npm start

  fems-app:
    expose:
      - "3003"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.fems-app.rule=Host(`${DOMAIN}`)"
      - "traefik.http.routers.fems-app.entrypoints=websecure"
      - "traefik.http.routers.fems-app.tls=true"
      - "traefik.http.services.fems-app.loadbalancer.server.port=3000"
    volumes:
      - ../../wacefems/uploads:/app/uploads
    networks:
      - ${TRAEFIK_NETWORK}
      - internal
    command: npm start

  fems-api:
    expose:
      - "3001"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.fems-api.rule=Host(`${API_SUBDOMAIN}`)"
      - "traefik.http.routers.fems-api.entrypoints=websecure"
      - "traefik.http.routers.fems-api.tls=true"
      - "traefik.http.services.fems-api.loadbalancer.server.port=3001"
    volumes:
      - ../../wacefems/uploads:/app/uploads
      - fems_tmp:/app/tmp
    networks:
      - ${TRAEFIK_NETWORK}
      - internal
    command: npm start

volumes:
  postgres_data:
  redis_data:
  fems_tmp:
  uploaded_files:
    driver: local
    # driver_opts:
    #   type: none
    #   device: /home/wacefems_upload
    #   o: bind

networks:
  ${TRAEFIK_NETWORK}:
    external: true
  internal:
    driver: bridge