compose.yaml
Rama main · réplica de lectura del repositorio original.
name: subpool
services:
subpool:
image: ${SUBPOOL_IMAGE:-public.ecr.aws/cloudpilotai/subpool:latest}
pull_policy: always
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
environment:
SUBPOOL_API_LISTEN_ADDRESS: ":8080"
SUBPOOL_CONSOLE_LISTEN_ADDRESS: ":8081"
SUBPOOL_PUBLIC_URL: ${SUBPOOL_PUBLIC_URL:-http://localhost:8081}
SUBPOOL_DATABASE_URL: postgres://${POSTGRES_USER:-subpool}:${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB:-subpool}?sslmode=disable
SUBPOOL_ADMIN_USERNAME: ${SUBPOOL_ADMIN_USERNAME:?Set SUBPOOL_ADMIN_USERNAME}
SUBPOOL_ADMIN_PASSWORD: ${SUBPOOL_ADMIN_PASSWORD:?Set SUBPOOL_ADMIN_PASSWORD}
SUBPOOL_TRUSTED_PROXY_CIDRS: ${SUBPOOL_TRUSTED_PROXY_CIDRS:-}
SUBPOOL_CREDENTIAL_KEY: ${SUBPOOL_CREDENTIAL_KEY:?Set SUBPOOL_CREDENTIAL_KEY}
SUBPOOL_API_KEY_HMAC_KEY: ${SUBPOOL_API_KEY_HMAC_KEY:?Set SUBPOOL_API_KEY_HMAC_KEY}
SUBPOOL_CODEX_QUOTA_ROUTING: ${SUBPOOL_CODEX_QUOTA_ROUTING:-false}
SUBPOOL_RESET_NOTICE_ENABLED: ${SUBPOOL_RESET_NOTICE_ENABLED:-false}
SUBPOOL_RESET_NOTICE_MCP_URL: ${SUBPOOL_RESET_NOTICE_MCP_URL:-}
SUBPOOL_RESET_NOTICE_MCP_AUTHORIZATION: ${SUBPOOL_RESET_NOTICE_MCP_AUTHORIZATION:-}
SUBPOOL_RESET_NOTICE_MCP_TOOL: ${SUBPOOL_RESET_NOTICE_MCP_TOOL:-slack__slack_send_message}
SUBPOOL_RESET_NOTICE_CHANNEL: ${SUBPOOL_RESET_NOTICE_CHANNEL:-}
SUBPOOL_GESTA_USAGE_REPORT_URL: ${SUBPOOL_GESTA_USAGE_REPORT_URL:-}
SUBPOOL_GESTA_USAGE_REPORT_TOKEN: ${SUBPOOL_GESTA_USAGE_REPORT_TOKEN:-}
SUBPOOL_REPORT_PEOPLE: ${SUBPOOL_REPORT_PEOPLE:-}
SUBPOOL_RESPONSES_WS_ENABLED: ${SUBPOOL_RESPONSES_WS_ENABLED:-true}
SUBPOOL_RESPONSES_WS_FORCE_HTTP_BRIDGE: ${SUBPOOL_RESPONSES_WS_FORCE_HTTP_BRIDGE:-false}
SUBPOOL_UPSTREAM_RESPONSE_HEADER_TIMEOUT: ${SUBPOOL_UPSTREAM_RESPONSE_HEADER_TIMEOUT:-3m}
SUBPOOL_MAX_REQUEST_BODY_BYTES: ${SUBPOOL_MAX_REQUEST_BODY_BYTES:-268435456}
SUBPOOL_MAX_INFLIGHT_REQUEST_BODY_BYTES: ${SUBPOOL_MAX_INFLIGHT_REQUEST_BODY_BYTES:-1073741824}
SUBPOOL_REQUEST_BODY_READ_TIMEOUT: ${SUBPOOL_REQUEST_BODY_READ_TIMEOUT:-5m}
SUBPOOL_COPILOT_CLIENT_ID: ${SUBPOOL_COPILOT_CLIENT_ID:-Iv1.b507a08c87ecfe98}
SUBPOOL_COPILOT_API_BASE: ${SUBPOOL_COPILOT_API_BASE:-https://api.githubcopilot.com}
SUBPOOL_COPILOT_TOKEN_EXCHANGE_URL: ${SUBPOOL_COPILOT_TOKEN_EXCHANGE_URL:-https://api.github.com/copilot_internal/v2/token}
SUBPOOL_ANTIGRAVITY_CLIENT_ID: ${SUBPOOL_ANTIGRAVITY_CLIENT_ID:-}
SUBPOOL_ANTIGRAVITY_CLIENT_SECRET: ${SUBPOOL_ANTIGRAVITY_CLIENT_SECRET:-}
SUBPOOL_ANTIGRAVITY_BASE_URL: ${SUBPOOL_ANTIGRAVITY_BASE_URL:-https://cloudcode-pa.googleapis.com}
SUBPOOL_ANTIGRAVITY_USER_AGENT: ${SUBPOOL_ANTIGRAVITY_USER_AGENT:-antigravity/hub/2.23.0 windows/amd64}
ports:
- "${SUBPOOL_PORT:-8080}:8080"
- "${SUBPOOL_CONSOLE_PORT:-8081}:8081"
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:8080/healthz"]
interval: 10s
timeout: 3s
retries: 5
start_period: 15s
security_opt:
- no-new-privileges:true
postgres:
image: postgres:17-alpine
restart: unless-stopped
environment:
POSTGRES_USER: ${POSTGRES_USER:-subpool}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB:-subpool}
volumes:
- subpool-postgres:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 5s
timeout: 3s
retries: 10
security_opt:
- no-new-privileges:true
volumes:
subpool-postgres: