services: pediatric-scribe: build: . image: ped-ai-local:latest ports: - "127.0.0.1:3552:3000" env_file: - .env environment: CLINICAL_ASSISTANT_MCP_URL: http://mcp:8000/mcp REDIS_URL: redis://ped-ai-redis:6379 LOKI_URL: http://monitoring-loki:3100 LITELLM_API_BASE: http://litellm:4000 TTS_PROVIDER: litellm LITELLM_TTS_MODEL: local-kokoro-tts LITELLM_TTS_VOICE: sherpa/kokoro:am_adam LITELLM_TTS_VOICES: sherpa/kokoro:am_adam,sherpa/kokoro:am_michael,sherpa/kokoro:af_bella,sherpa/kokoro:af_nicole,sherpa/kokoro:bf_emma,sherpa/kokoro:bm_lewis CLINICAL_ASSISTANT_PROMPT_POOL_TARGET: 1000 volumes: - scribe-logs:/app/data/logs - clinical-assistant-mcp-data:/app/mcp-data:ro depends_on: postgres: condition: service_healthy redis: condition: service_healthy restart: unless-stopped container_name: pediatric-ai-scribe networks: - default - mcp-server_default - monitoring_default - speech_net healthcheck: test: ["CMD", "wget", "--spider", "-q", "http://localhost:3000/api/health"] interval: 30s timeout: 10s retries: 5 start_period: 20s postgres: # Tag-pinned. If a newer pg16 image ships a different ICU library, the # startup drift check in src/db/database.js auto-REINDEXes and # refreshes the collation version. For stricter control, pin by digest. image: pgvector/pgvector:pg16 environment: POSTGRES_DB: pedscribe POSTGRES_USER: pedscribe POSTGRES_PASSWORD: ${DB_PASSWORD:?set DB_PASSWORD} volumes: - pgdata:/var/lib/postgresql/data restart: unless-stopped container_name: pedscribe-db healthcheck: test: ["CMD-SHELL", "pg_isready -U pedscribe"] interval: 10s timeout: 5s retries: 5 start_period: 10s redis: image: redis:8-alpine command: redis-server --appendonly yes restart: unless-stopped container_name: ped-ai-redis volumes: - redis-data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 networks: - default - mcp-server_default volumes: pgdata: scribe-logs: redis-data: clinical-assistant-mcp-data: external: true name: mcp-server_mcp-data networks: mcp-server_default: external: true monitoring_default: external: true speech_net: external: true