services: postgres: image: postgres:16-alpine environment: POSTGRES_DB: orchestrator POSTGRES_USER: orchestrator POSTGRES_PASSWORD: orchestrator ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U orchestrator -d orchestrator"] interval: 5s timeout: 5s retries: 10 redis: image: redis:7-alpine ports: - "6379:6379" qdrant: image: qdrant/qdrant:v1.11.5 ports: - "6333:6333" volumes: - qdrant_data:/qdrant/storage backend: build: context: ./backend dockerfile: ../docker/backend.Dockerfile environment: DATABASE_URL: postgresql+psycopg://orchestrator:orchestrator@postgres:5432/orchestrator REDIS_URL: redis://redis:6379/0 QDRANT_URL: http://qdrant:6333 BACKEND_BASE_URL: http://backend:8000 ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY:-} ANTHROPIC_MODEL: ${ANTHROPIC_MODEL:-claude-sonnet-4-6} WED_API_BASE_URL: ${WED_API_BASE_URL:-http://host.docker.internal:8000} WED_API_OPENAPI_URL: ${WED_API_OPENAPI_URL:-} WED_API_BEARER_TOKEN: ${WED_API_BEARER_TOKEN:-} WED_DEFAULT_PARTNER_ID: ${WED_DEFAULT_PARTNER_ID:-} WED_GUEST_FIRST_NAME: ${WED_GUEST_FIRST_NAME:-Demo} WED_GUEST_LAST_NAME: ${WED_GUEST_LAST_NAME:-Customer} WED_GUEST_EMAIL: ${WED_GUEST_EMAIL:-demo.customer@example.com} WED_GUEST_PHONE: ${WED_GUEST_PHONE:-} SONIOX_API_KEY: ${SONIOX_API_KEY:-} SONIOX_MODEL: ${SONIOX_MODEL:-stt-async-preview} depends_on: postgres: condition: service_healthy redis: condition: service_started qdrant: condition: service_started ports: - "9000:8000" command: > sh -c "alembic upgrade head && python -m app.seed && uvicorn app.main:app --host 0.0.0.0 --port 8000" frontend: build: context: ./frontend dockerfile: ../docker/frontend.Dockerfile environment: VITE_BACKEND_URL: http://backend:8000 depends_on: - backend ports: - "5173:5173" command: npm run dev volumes: postgres_data: qdrant_data: