services: rabbitmq: # Сервис для RabbitMQ (брокера сообщений) image: rabbitmq:3-management # Используемый образ RabbitMQ с веб-интерфейсом управления ports: - "5672:5672" # Порт для подключения клиентов к RabbitMQ - "15672:15672" # Порт для доступа к веб-интерфейсу управления environment: # Переменные окружения для настройки RabbitMQ - RABBITMQ_DEFAULT_USER=guest # Имя пользователя по умолчанию - RABBITMQ_DEFAULT_PASS=guest # Пароль пользователя по умолчанию healthcheck: test: ["CMD", "rabbitmqctl", "status"] # Проверка работоспособности RabbitMQ interval: 10s # Интервал между проверками (10 секунд) timeout: 5s # Тайм-аут для проверки (5 секунд) retries: 5 # Количество попыток при неудачных проверках publisher: # Сервис для запуска издателя (publisher) build: context: . # Использует текущую директорию для сборки Docker-образа command: python publisher.py # Команда для запуска издателя environment: - PYTHONUNBUFFERED=1 # Отключение буферизации вывода Python depends_on: rabbitmq: condition: service_healthy # Ожидает готовности RabbitMQ перед запуском consumer_1: # Сервис для запуска первого потребителя (consumer_1) build: context: . # Использует текущую директорию для сборки Docker-образа command: python consumer_1.py # Команда для запуска первого потребителя environment: - PYTHONUNBUFFERED=1 # Отключение буферизации вывода Python depends_on: rabbitmq: condition: service_healthy # Ожидает готовности RabbitMQ перед запуском consumer_2: # Сервис для запуска второго потребителя (consumer_2) build: context: . # Использует текущую директорию для сборки Docker-образа command: python consumer_2.py # Команда для запуска второго потребителя environment: - PYTHONUNBUFFERED=1 # Отключение буферизации вывода Python depends_on: rabbitmq: condition: service_healthy # Ожидает готовности RabbitMQ перед запуском