services:
  codexmanager-service:
    build:
      context: ..
      dockerfile: docker/Dockerfile.service
    restart: unless-stopped
    environment:
      CODEXMANAGER_SERVICE_ADDR: 0.0.0.0:48760
      TZ: ${TZ:-Asia/Shanghai}
      CODEXMANAGER_DB_PATH: /data/codexmanager.db
      CODEXMANAGER_RPC_TOKEN_FILE: /data/codexmanager.rpc-token
      CODEXMANAGER_GATEWAY_TRACE_STDOUT: "1"
      CODEXMANAGER_GATEWAY_ERROR_STDOUT: "1"
      # Optional mitigation for same key/path/model head-of-line gate waits:
      # CODEXMANAGER_REQUEST_GATE_WAIT_TIMEOUT_MS: "5000"
    volumes:
      - codexmanager-data:/data
    ports:
      - "48760:48760"

  codexmanager-web:
    build:
      context: ..
      dockerfile: docker/Dockerfile.web
    restart: unless-stopped
    depends_on:
      codexmanager-service:
        condition: service_healthy
    environment:
      CODEXMANAGER_WEB_ADDR: 0.0.0.0:48761
      CODEXMANAGER_WEB_NO_SPAWN_SERVICE: "1"
      CODEXMANAGER_SERVICE_ADDR: codexmanager-service:48760
      TZ: ${TZ:-Asia/Shanghai}
      CODEXMANAGER_DB_PATH: /data/codexmanager.db
      CODEXMANAGER_RPC_TOKEN_FILE: /data/codexmanager.rpc-token
      CODEXMANAGER_WEB_NO_OPEN: "1"
      CODEXMANAGER_GATEWAY_TRACE_STDOUT: "1"
      CODEXMANAGER_GATEWAY_ERROR_STDOUT: "1"
      # Optional mitigation for same key/path/model head-of-line gate waits:
      # CODEXMANAGER_REQUEST_GATE_WAIT_TIMEOUT_MS: "5000"
    volumes:
      - codexmanager-data:/data
    ports:
      - "48761:48761"

volumes:
  codexmanager-data: