version: "3.9" services: redis: image: redis:7-alpine container_name: orator-redis ports: - "6379:6379" healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 start_period: 10s restart: unless-stopped clamav: build: context: ./clamav container_name: orator-clamav ports: - "3310:3310" volumes: - clamav-db:/var/lib/clamav restart: unless-stopped healthcheck: test: ["CMD", "nc", "-z", "localhost", "3310"] interval: 30s timeout: 10s retries: 10 start_period: 300s fastapi: container_name: orator-api build: context: ./Backend ports: - "8000:8000" volumes: - ./Backend:/app - audio_data:/app/static/audio environment: - CELERY_BROKER_URL=redis://redis:6379/0 - CELERY_RESULT_BACKEND=redis://redis:6379/0 - CLAMD_HOST=clamav - CLAMD_PORT=3310 - ENABLE_ANTIVIRUS=true depends_on: redis: condition: service_healthy clamav: condition: service_healthy healthcheck: test: ["CMD", "python", "-v" ] interval: 30s timeout: 10s retries: 3 start_period: 30s restart: unless-stopped celery: container_name: orator-celery build: context: Backend command: celery -A celery_config worker --pool=threads --concurrency=4 --loglevel=info volumes: - ./backend:/app environment: - CELERY_BROKER_URL=redis://redis:6379/0 - CELERY_RESULT_BACKEND=redis://redis:6379/0 depends_on: redis: condition: service_healthy healthcheck: test: ["CMD", "celery", "-A", "celery_config", "inspect", "ping"] interval: 30s timeout: 10s retries: 3 start_period: 30s restart: unless-stopped flower: build: context: ./flower container_name: orator-flower ports: - "5555:5555" environment: - CELERY_BROKER_URL=redis://redis:6379/0 - FLOWER_PORT=5555 depends_on: redis: condition: service_healthy celery: condition: service_healthy healthcheck: test: ["CMD", "curl", "-f", "http://localhost:5555/"] interval: 30s timeout: 10s retries: 3 start_period: 30s restart: unless-stopped volumes: audio_data: clamav-db: