services: fastapi: build: . container_name: fastapi_app_dev command: uvicorn app.main:app --host 0.0.0.0 --port 7890 --reload volumes: - ./app:/app/app - ./temp_files:/app/temp_files ports: - "7890:7890" env_file: - .env.dev environment: - MAIN_SERVER_URL=http://fastapi:7890 - CELERY_BROKER_URL=redis://redis:6379/0 - CELERY_RESULT_BACKEND=redis://redis:6379/1 depends_on: - redis # worker: # build: . # container_name: celery_worker_dev # command: > # celery -A worker.tasks.celery_app worker # -Q translate,rembg # -l info # --concurrency=4 # volumes: # - ./app:/app/app # - ./temp_files:/app/temp_files # env_file: # - .env.dev # environment: # - MAIN_SERVER_URL=http://fastapi:7890 # - CELERY_BROKER_URL=redis://redis:6379/0 # - CELERY_RESULT_BACKEND=redis://redis:6379/1 # depends_on: # - redis # ─── Flower ───────────────── flower: image: mher/flower:master environment: - FLOWER_UNAUTHENTICATED_API=true - CELERY_BROKER_URL=redis://redis:6379/0 ports: - "5555:5555" depends_on: [redis] restart: unless-stopped redis: image: redis:6.2 container_name: redis_server_dev ports: - "6379:6379" command: ["redis-server", "--appendonly", "yes"] # ─── Prometheus ───────────────────────── prometheus: image: prom/prometheus:v3.5.0 environment: - TZ=Asia/Seoul ports: - "9090:9090" volumes: - /etc/localtime:/etc/localtime:ro - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro # ─── Celery → Prometheus Exporter ────────────── celery_exporter: image: danihodovic/celery-exporter:latest command: ["--broker-url=redis://redis:6379/0"] ports: ["9808:9808"] depends_on: [redis] restart: unless-stopped # ─── Grafana ──────────────────────────── grafana: image: grafana/grafana:12.0.4-ubuntu environment: - TZ=Asia/Seoul volumes: - /etc/localtime:/etc/localtime:ro ports: - "3000:3000" depends_on: - prometheus