services: api: build: . environment: LINGUALOOP_PROVIDER: mock LINGUALOOP_DATABASE_URL: postgresql://lingualoop:lingualoop@postgres:5432/lingualoop LINGUALOOP_LEARNER_STORE_BACKEND: postgres LINGUALOOP_REDIS_URL: redis://redis:6379/0 LINGUALOOP_VOICE_SESSION_BACKEND: redis ports: - "8000:8000" depends_on: postgres: condition: service_healthy redis: condition: service_healthy postgres: image: pgvector/pgvector:pg17 environment: POSTGRES_USER: lingualoop POSTGRES_PASSWORD: lingualoop POSTGRES_DB: lingualoop ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data - ./infra/sql:/docker-entrypoint-initdb.d healthcheck: test: ["CMD-SHELL", "pg_isready -U lingualoop -d lingualoop"] interval: 5s timeout: 3s retries: 10 redis: image: redis:7-alpine ports: - "6379:6379" healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 3s retries: 10 volumes: postgres_data: