version: '3.8' services: voice-api: build: . ports: - "8000:8000" volumes: - ./voice_models:/app/voice_models - ./audio_files:/app/audio_files environment: - MODEL_PATH=/app/models/coqui_xtts - VOICE_CACHE_DIR=/app/voice_cache - WORKERS=4 deploy: resources: limits: cpus: '2.0' memory: 4G reservations: cpus: '1.0' memory: 2G restart: unless-stopped tts-model: image: coqui/tts:latest ports: - "9000:9000" volumes: - ./models:/models - ./tts_cache:/tts_cache environment: - MODEL_NAME=x TTS - MODEL_PATH=/models/coqui_xtts - CACHE_DIR=/tts_cache - GPU_SUPPORT=${GPU_SUPPORT:-false} deploy: resources: limits: cpus: '4.0' memory: 8G ${GPU_LIMITS} reservations: cpus: '2.0' memory: 4G restart: unless-stopped redis: image: redis:alpine ports: - "6379:6379" volumes: - ./redis_data:/data command: redis-server --appendonly yes deploy: resources: limits: cpus: '0.5' memory: 256M reservations: cpus: '0.25' memory: 128M restart: unless-stopped # Optional: Speech-to-text service for voice input stt-service: image: vosk/kaldi:latest ports: - "9001:9001" volumes: - ./models/vosk:/models/vosk environment: - MODEL_PATH=/models/vosk/model deploy: resources: limits: cpus: '2.0' memory: 4G reservations: cpus: '1.0' memory: 2G restart: unless-stopped volumes: voice_models: driver: local audio_files: driver: local models: driver: local tts_cache: driver: local redis_data: driver: local vosk_models: driver: local networks: default: driver: bridge # Environment variables for GPU support # Set GPU_SUPPORT=true and provide GPU_LIMITS when using GPU # Example: GPU_LIMITS=nvidia.com/gpu=1