# ============================================================================= # Ukweli — Local Development Docker Compose # Spins up PostgreSQL, Qdrant, and Redis alongside the app # ============================================================================= services: app: build: context: . dockerfile: Dockerfile ports: - "8000:7860" environment: - APP_ENV=development - APP_DEBUG=true - APP_PORT=7860 - DATABASE_URL=postgresql+asyncpg://ukweli:ukweli_dev@postgres:5432/ukweli - QDRANT_URL=http://qdrant:6333 - REDIS_URL=redis://redis:6379 - DOCUMENT_STORAGE_PATH=/data/documents - HF_TOKEN=${HF_TOKEN:-} volumes: - ./app:/app/app - ./config:/app/config - ukweli_docs:/data/documents - ukweli_logs:/data/logs depends_on: postgres: condition: service_healthy qdrant: condition: service_started redis: condition: service_healthy restart: unless-stopped postgres: image: postgres:16-alpine environment: POSTGRES_USER: ukweli POSTGRES_PASSWORD: ukweli_dev POSTGRES_DB: ukweli ports: - "5432:5432" volumes: - ukweli_pgdata:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ukweli -d ukweli"] interval: 5s timeout: 5s retries: 5 restart: unless-stopped qdrant: image: qdrant/qdrant:latest ports: - "6333:6333" - "6334:6334" volumes: - ukweli_qdrant:/qdrant/storage environment: - QDRANT__SERVICE__GRPC_PORT=6334 restart: unless-stopped redis: image: redis:7-alpine ports: - "6379:6379" volumes: - ukweli_redis:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 5s retries: 5 restart: unless-stopped volumes: ukweli_pgdata: ukweli_qdrant: ukweli_redis: ukweli_docs: ukweli_logs: