# Catalog API - Docker Compose Configuration # # Port Allocation (Production API Gateway: 11000): # 11000 - Catalog API (main orchestrator gateway) # # Network: # Uses didi-network network (shared with other modules) # # Naming Convention: didiAI-{module}-{service} networks: didi-network: external: true # single shared network for all DIDI + AI platform stacks services: catalog-api: container_name: didiAI-catalog-api image: didiai-catalog-api build: context: .. dockerfile: deploy/Dockerfile # No external port - accessible only via Gateway (:11000/catalog/) expose: - "11000" networks: - didi-network environment: # Server settings - CATALOG_HOST=0.0.0.0 - CATALOG_PORT=11000 - CATALOG_LOG_LEVEL=${CATALOG_LOG_LEVEL:-INFO} # External URL for OpenAPI spec (REQUIRED - no default) - CATALOG_EXTERNAL_URL=${CATALOG_EXTERNAL_URL} # Component URLs (Docker internal network) - CATALOG_LLM_URL=${CATALOG_LLM_URL:-http://didiAI-llm-api:14011} - CATALOG_AUDIO_URL=${CATALOG_AUDIO_URL:-http://didiAI-audio:54300} - CATALOG_VIDEO_URL=${CATALOG_VIDEO_URL} - CATALOG_WEB_URL=${CATALOG_WEB_URL:-http://didiAI-web-api:51100} # External ports for OpenAPI spec (used when generating external URLs) - CATALOG_LLM_EXTERNAL_PORT=${CATALOG_LLM_EXTERNAL_PORT:-14011} - CATALOG_AUDIO_EXTERNAL_PORT=${CATALOG_AUDIO_EXTERNAL_PORT:-54300} - CATALOG_VIDEO_EXTERNAL_PORT=${CATALOG_VIDEO_EXTERNAL_PORT:-54600} - CATALOG_WEB_EXTERNAL_PORT=${CATALOG_WEB_EXTERNAL_PORT:-51100} # HTTP client settings - CATALOG_COMPONENT_TIMEOUT=${CATALOG_COMPONENT_TIMEOUT:-10} # Runtime config polling - CATALOG_DASHBOARD_URL=${CATALOG_DASHBOARD_URL:-http://didiAI-dashboard:51300} healthcheck: test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:11000/health')"] interval: 30s timeout: 10s retries: 3 start_period: 10s restart: unless-stopped