# CCS Dashboard Docker Compose
# See docker/README.md for documentation
services:
  ccs-dashboard:
    image: ccs-dashboard:latest
    build:
      context: ..
      dockerfile: docker/Dockerfile
    restart: unless-stopped
    init: true
    ports:
      - "${CCS_DASHBOARD_PORT:-3000}:3000"
      - "${CCS_CLIPROXY_PORT:-8317}:8317"
    environment:
      CCS_PORT: 3000
      CCS_DEBUG: "${CCS_DEBUG:-}"
      NO_COLOR: "${NO_COLOR:-}"
      CCS_SKIP_PREFLIGHT: "${CCS_SKIP_PREFLIGHT:-}"
      CCS_WEBSEARCH_SKIP: "${CCS_WEBSEARCH_SKIP:-}"
      CCS_PROXY_HOST: "${CCS_PROXY_HOST:-}"
      CCS_PROXY_PORT: "${CCS_PROXY_PORT:-}"
      CCS_PROXY_PROTOCOL: "${CCS_PROXY_PROTOCOL:-}"
      CCS_PROXY_AUTH_TOKEN: "${CCS_PROXY_AUTH_TOKEN:-}"
      CCS_PROXY_TIMEOUT: "${CCS_PROXY_TIMEOUT:-}"
      CCS_PROXY_FALLBACK_ENABLED: "${CCS_PROXY_FALLBACK_ENABLED:-}"
      CCS_ALLOW_SELF_SIGNED: "${CCS_ALLOW_SELF_SIGNED:-}"
    volumes:
      - ccs_home:/home/node/.ccs
      - claude_home:/home/node/.claude
      - opencode_home:/home/node/.opencode
      - grok_home:/home/node/.grok-cli
    # Healthcheck uses internal ports (3000/8317) which are fixed
    healthcheck:
      test: ["CMD-SHELL", "curl -fsS --max-time 2 http://localhost:3000/ >/dev/null && curl -sS --max-time 2 http://127.0.0.1:8317/ >/dev/null"]
      interval: 10s
      timeout: 3s
      retries: 12
      start_period: 30s
    # Resource limits (adjust based on workload)
    deploy:
      resources:
        limits:
          memory: 1G
          cpus: '2'
        reservations:
          memory: 256M
          cpus: '0.5'

volumes:
  ccs_home:
  claude_home:
  opencode_home:
  grok_home:
