volumes: db_data: {} batcher_db_data: {} backend_media: {} backend_static: {} services: backend: build: context: ./backend volumes: - backend_media:/app/media - backend_static:/app/static command: /app/scripts/prod.sh restart: on-failure depends_on: postgres: &healthy-dependency condition: service_healthy rabbitmq: *healthy-dependency env_file: &backend-env-files - .env/dev/pg - .env/dev/back - .env/dev/rmq - .env/dev/bot_token - .env/dev/web bot: build: ./bot depends_on: backend: &started-dependency condition: service_started batcher: *started-dependency env_file: - .env/dev/bot - .env/dev/bot_token - .env/dev/web command: /app/scripts/prod.sh restart: on-failure postgres: &pg-conf image: postgres:17-alpine volumes: - db_data:/var/lib/postgresql/data env_file: - .env/dev/pg user: postgres healthcheck: &pg-healthcheck test: [ "CMD-SHELL", "pg_isready" ] interval: 5s timeout: 2s retries: 5 nginx: build: context: . dockerfile: nginx/Dockerfile ports: - '80:80' - '443:443' depends_on: bot: *started-dependency volumes: - backend_static:/static/ - backend_media:/media/ restart: unless-stopped celery: build: ./backend command: /app/scripts/start_celery.sh env_file: *backend-env-files environment: - CELERY_WORKER_COUNT=10 depends_on: backend: *started-dependency rabbitmq: container_name: 'rabbitmq' image: 'rabbitmq:3-management-alpine' env_file: - .env/dev/rmq healthcheck: <<: *pg-healthcheck test: rabbitmq-diagnostics -q ping interval: 10s timeout: 2s batcher: build: ./batcher depends_on: batcher-postgres: *healthy-dependency rabbitmq: *healthy-dependency env_file: - .env/dev/rmq - .env/dev/batcher-pg - .env/dev/batcher - .env/dev/bot_token batcher-postgres: <<: *pg-conf volumes: - batcher_db_data:/var/lib/postgresql/data env_file: - .env/dev/batcher-pg