services: # ----------------------- # Database (PostgreSQL) # ----------------------- postgres: image: postgres:16-alpine restart: unless-stopped environment: - POSTGRES_USER - POSTGRES_PASSWORD - POSTGRES_DB volumes: - postgres-data:/var/lib/postgresql/data healthcheck: test: "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}" interval: 10s timeout: 5s retries: 5 # ----------------------- # Conversation‑logging microservice # ----------------------- db_service: build: context: ./db_service restart: unless-stopped environment: - POSTGRES_USER - POSTGRES_PASSWORD - POSTGRES_DB - POSTGRES_HOST - LOG_TOKEN depends_on: postgres: condition: service_healthy ports: - "8000:8000" # expose externally only if needed matrix_service: build: ./matrix_service environment: - MATRIX_HOMESERVER_URL - MATRIX_USER_ID - MATRIX_PASSWORD - AI_HANDLER_URL - AI_HANDLER_TOKEN volumes: - ./matrix_service:/app - matrix_data:/app/data depends_on: - ai_service ai_service: build: ./ai_service environment: - OPENAI_API_KEY=${OPENAI_API_KEY} - AI_HANDLER_TOKEN=${AI_HANDLER_TOKEN} - REDIS_URL=redis://redis:6379 depends_on: - redis redis: image: redis:7 restart: unless-stopped volumes: - redis-data:/data volumes: matrix_data: redis-data: postgres-data: