services: postgres: image: postgres:16 environment: POSTGRES_DB: smart_support POSTGRES_USER: smart_support POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-dev_password} ports: ["5433:5432"] # Local dev: expose on 5433 to match backend/.env volumes: - pgdata:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U smart_support -d smart_support"] interval: 5s timeout: 3s retries: 5 networks: - app_network backend: build: context: ./backend dockerfile: Dockerfile ports: - "8000:8000" environment: DATABASE_URL: postgresql://smart_support:${POSTGRES_PASSWORD:-dev_password}@postgres:5432/smart_support LLM_PROVIDER: ${LLM_PROVIDER:-anthropic} LLM_MODEL: ${LLM_MODEL:-claude-sonnet-4-6} ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY:-} OPENAI_API_KEY: ${OPENAI_API_KEY:-} AZURE_OPENAI_API_KEY: ${AZURE_OPENAI_API_KEY:-} AZURE_OPENAI_ENDPOINT: ${AZURE_OPENAI_ENDPOINT:-} AZURE_OPENAI_DEPLOYMENT: ${AZURE_OPENAI_DEPLOYMENT:-} AZURE_OPENAI_API_VERSION: ${AZURE_OPENAI_API_VERSION:-2024-12-01-preview} GOOGLE_API_KEY: ${GOOGLE_API_KEY:-} WEBHOOK_URL: ${WEBHOOK_URL:-} SESSION_TTL_MINUTES: ${SESSION_TTL_MINUTES:-30} INTERRUPT_TTL_MINUTES: ${INTERRUPT_TTL_MINUTES:-30} TEMPLATE_NAME: ${TEMPLATE_NAME:-} depends_on: postgres: condition: service_healthy healthcheck: test: ["CMD-SHELL", "curl -f http://localhost:8000/api/health || exit 1"] interval: 10s timeout: 5s retries: 5 networks: - app_network frontend: build: context: ./frontend dockerfile: Dockerfile ports: - "80:80" depends_on: backend: condition: service_healthy networks: - app_network networks: app_network: driver: bridge volumes: pgdata: