# ============================================================================
# HOT-Step 9000 CPP — Docker Compose
#
# Usage:
#   docker compose up              # Start (build if needed)
#   docker compose up --build      # Force rebuild
#   docker compose down            # Stop
#   docker compose logs -f         # Follow logs
# ============================================================================

services:
  hot-step:
    build:
      context: .
      args:
        # Dev: Blackwell only (~3 min build)
        # Distribution: "75;80;86;89;90;120a" (~15-20 min)
        CUDA_ARCHS: "120a"
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
    ports:
      - "3001:3001"
    volumes:
      # All I/O on host — accessible from Windows Explorer
      - ./models:/app/models              # GGUF model files
      - "D:/Ace-Step-Latest/All LoKR Files/sidestep/xl-base-turbo-05:/app/adapters:ro"
      - "D:/Ace-Step-Latest/Datasets-LoRA-LoKR:/app/datasets:ro"
      - ./server/data:/app/server/data          # Shared SQLite DB + audio (same as Windows app)
      # Lua plugins (bind-mounted so edits are instant, no rebuild needed)
      - ./engine/plugins:/app/engine/plugins:ro   # Built-in (solvers, schedulers, etc.)
      - ./plugins:/app/plugins:ro                  # Community/custom plugins
      # Server source (live from host — `docker compose restart` to apply changes)
      # node_modules stays baked in the image; only src/ is overlaid
      - ./server/src:/app/server/src:ro
      # TRT engine cache (GPU-specific, persists across container restarts)
      - trt_engine_cache:/app/trt_cache
    env_file:
      - .env.docker
    restart: unless-stopped

volumes:
  trt_engine_cache:
