services: frontend: build: context: ./rag-quest-hub dockerfile: Dockerfile ports: - "3000:8080" depends_on: - backend environment: - VITE_API_BASE_URL=${VITE_API_BASE_URL:-http://localhost:8000} - VITE_API_TIMEOUT=${VITE_API_TIMEOUT:-30000} - VITE_ENABLE_REGISTRATION=${VITE_ENABLE_REGISTRATION:-true} restart: unless-stopped networks: - app-network healthcheck: test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8080/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s backend: build: context: . dockerfile: Dockerfile ports: - "8000:8000" volumes: - db_data:/app/data depends_on: qdrant: condition: service_healthy environment: - QDRANT_HOST=qdrant - QDRANT_PORT=6333 - GEMINI_API_KEY=${GEMINI_API_KEY} - CORS_ORIGINS=${CORS_ORIGINS:-http://localhost:3000} - DATABASE_URL=sqlite+aiosqlite:///./data/knowledge_assistant.db - JWT_SECRET=${JWT_SECRET} - JWT_LIFETIME_SECONDS=${JWT_LIFETIME_SECONDS:-3600} - USER_REGISTRATION_ENABLED=${USER_REGISTRATION_ENABLED:-true} - EMAIL_VERIFICATION_REQUIRED=${EMAIL_VERIFICATION_REQUIRED:-false} - PYTHONUNBUFFERED=1 - PYTHONDONTWRITEBYTECODE=1 restart: unless-stopped networks: - app-network entrypoint: ["/app/scripts/wait-for-qdrant.sh", "qdrant:6333", "/app/scripts/init-db.sh"] healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] interval: 30s timeout: 10s retries: 3 start_period: 60s qdrant: image: qdrant/qdrant:latest ports: - "6333:6333" - "6334:6334" volumes: - qdrant_data:/qdrant/storage environment: - QDRANT__SERVICE__HTTP_PORT=6333 - QDRANT__SERVICE__GRPC_PORT=6334 restart: unless-stopped networks: - app-network healthcheck: test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:6333/health"] interval: 30s timeout: 10s retries: 3 start_period: 30s volumes: qdrant_data: driver: local db_data: driver: local networks: app-network: driver: bridge ipam: config: - subnet: 172.20.0.0/16