version: '3.8' services: postgres: image: postgres:15 restart: unless-stopped environment: POSTGRES_USER: meetingassistant POSTGRES_PASSWORD: meetingassistant POSTGRES_DB: meeting_assistant volumes: - postgres_data:/var/lib/postgresql/data ports: - "5432:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U meetingassistant"] interval: 10s timeout: 5s retries: 5 redis: image: redis:7-alpine restart: unless-stopped ports: - "6379:6379" healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 api: build: . restart: unless-stopped ports: - "8080:8000" env_file: - .env environment: - DATABASE_URL=postgresql://meetingassistant:meetingassistant@postgres:5432/meeting_assistant - REDIS_URL=redis://redis:6379/0 volumes: - audio_storage:/opt/Backend/meeting-assistant-api/storage/audio depends_on: postgres: condition: service_healthy redis: condition: service_healthy extra_hosts: - "host.docker.internal:host-gateway" worker: build: . restart: unless-stopped env_file: - .env environment: - DATABASE_URL=postgresql://meetingassistant:meetingassistant@postgres:5432/meeting_assistant - REDIS_URL=redis://redis:6379/0 volumes: - audio_storage:/opt/Backend/meeting-assistant-api/storage/audio depends_on: postgres: condition: service_healthy redis: condition: service_healthy extra_hosts: - "host.docker.internal:host-gateway" command: celery -A app.tasks.processing.celery_app worker --loglevel=info --concurrency=2 volumes: postgres_data: audio_storage: