services: app: build: context: . dockerfile: Dockerfile ports: - "8000:8000" env_file: .env depends_on: - redis - mosquitto volumes: - .:/app command: uvicorn app.asgi:app --host 0.0.0.0 --port 8000 --reload worker: build: context: . dockerfile: Dockerfile.worker env_file: .env depends_on: - redis volumes: - .:/app command: celery -A app.tasks.celery_app worker --loglevel=info --concurrency=2 beat: build: context: . dockerfile: Dockerfile.worker env_file: .env depends_on: - redis volumes: - .:/app command: celery -A app.tasks.celery_app beat --loglevel=info flower: build: context: . dockerfile: Dockerfile.worker ports: - "5555:5555" env_file: .env depends_on: - redis - worker command: celery -A app.tasks.celery_app flower --port=5555 redis: image: redis:7-alpine ports: - "6379:6379" volumes: - redis_data:/data mosquitto: image: eclipse-mosquitto:2 ports: - "1883:1883" - "9001:9001" volumes: - ./docker/mosquitto/mosquitto.conf:/mosquitto/config/mosquitto.conf - mosquitto_data:/mosquitto/data - mosquitto_log:/mosquitto/log volumes: redis_data: mosquitto_data: mosquitto_log: