services:
  api:
    build:
      context: .
      dockerfile: apps/api/Dockerfile
    environment:
      VIDBEE_API_HOST: 0.0.0.0
      VIDBEE_API_PORT: ${VIDBEE_API_PORT:-3100}
      VIDBEE_DOWNLOAD_DIR: /data/downloads
      VIDBEE_DATA_DIR: /data/vidbee
      VIDBEE_HISTORY_STORE_PATH: /data/vidbee/vidbee.db
    ports:
      - "${VIDBEE_API_PORT:-3100}:${VIDBEE_API_PORT:-3100}"
    volumes:
      # Set VIDBEE_DOWNLOAD_DIR_HOST=/path/on/your/NAS to use a bind mount.
      - ${VIDBEE_DOWNLOAD_DIR_HOST:-vidbee-downloads}:/data/downloads
      - vidbee-data:/data/vidbee
    healthcheck:
      test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:${VIDBEE_API_PORT:-3100}/health > /dev/null || exit 1"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 10s
    restart: unless-stopped

  web:
    build:
      context: .
      dockerfile: apps/web/Dockerfile
    environment:
      VIDBEE_API_URL_INTERNAL: http://api:${VIDBEE_API_PORT:-3100}
      VIDBEE_WEB_HOST: 0.0.0.0
      VIDBEE_WEB_PORT: 3000
      # Self-hosting behind a reverse proxy? Allow your domain through Vite's
      # host check (GitHub issue #404): set "*" to allow any host, or a
      # comma-separated list like "vidbee.example.com".
      VIDBEE_ALLOWED_HOSTS: ${VIDBEE_ALLOWED_HOSTS:-}
    depends_on:
      api:
        condition: service_healthy
    ports:
      - "${VIDBEE_WEB_PORT:-3000}:3000"
    restart: unless-stopped

volumes:
  vidbee-downloads:
  vidbee-data: