version: "3.9" services: cascade-api: build: . ports: - "8000:8000" environment: - REDIS_HOST=redis - REDIS_PORT=6379 - QDRANT_URL=http://qdrant:6333 - OPENAI_API_KEY=${OPENAI_API_KEY} depends_on: - redis - qdrant restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] interval: 30s timeout: 10s retries: 3 cascade-ui: build: . command: streamlit run src/cascade/ui/app.py --server.port=8501 --server.address=0.0.0.0 ports: - "8501:8501" environment: - API_URL=http://cascade-api:8000 depends_on: - cascade-api restart: unless-stopped redis: image: redis:7-alpine ports: - "6379:6379" volumes: - redis_data:/data restart: unless-stopped healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 qdrant: image: qdrant/qdrant:latest ports: - "6333:6333" - "6334:6334" volumes: - qdrant_data:/qdrant/storage restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:6333/"] interval: 10s timeout: 5s retries: 5 volumes: redis_data: qdrant_data: