version: '3.8'  # Версия Docker Compose файла

services:  # Определение сервисов (контейнеров), которые будут запускаться

  db:                                   # Сервис для базы данных MySQL
    image: mysql:8.0                    # Используемый образ MySQL версии 8.0
    restart: always                     # Автоматический перезапуск контейнера, если он завершился с ошибкой
    environment:                        # Переменные окружения для настройки MySQL
      MYSQL_DATABASE: bashmak           # Имя создаваемой базы данных
      MYSQL_USER: admin                 # Имя пользователя для базы данных
      MYSQL_PASSWORD: admin             # Пароль для указанного пользователя
    volumes:                            # Объявление томов для постоянного хранения данных MySQL
      - db:/var/lib/mysql               # Привязка тома к директории данных MySQL

  wordpress:                              # Сервис для запуска WordPress
    image: wordpress                      # Используемый образ WordPress
    restart: always                       # Автоматический перезапуск контейнера в случае сбоя
    depends_on:                           # Зависимость от сервиса базы данных (MySQL)
      - db                                # WordPress должен дождаться запуска MySQL
    ports:                                # Проброс портов
      - 8080:80                           # Проброс порта 8080 на порт 80 внутри контейнера (для доступа к WordPress)
    environment:                          # Переменные окружения для настройки WordPress
      WORDPRESS_DB_HOST: db               # Хост базы данных (название сервиса db)
      WORDPRESS_DB_USER: admin            # Имя пользователя для подключения к базе данных
      WORDPRESS_DB_PASSWORD: admin        # Пароль для подключения к базе данных
      WORDPRESS_DB_NAME: bashmak          # Имя базы данных, к которой подключается WordPress
    volumes:                              # Объявление томов для постоянного хранения данных WordPress
      - wordpress:/var/www/html           # Привязка тома к директории сайта WordPress

  rabbitmq:                               # Сервис для RabbitMQ (брокера сообщений)
    image: rabbitmq:3.10.7-management     # Используемый образ RabbitMQ с веб-интерфейсом управления
    restart: always                       # Автоматический перезапуск контейнера при ошибках
    ports:                                # Проброс портов
      - 8079:15672                        # Проброс порта 8079 на порт 15672 (веб-интерфейс RabbitMQ)
    environment:                          # Переменные окружения для настройки RabbitMQ
      - RABBITMQ_DEFAULT_USER=simpleuser  # Имя пользователя по умолчанию
      - RABBITMQ_DEFAULT_PASS=simplepass  # Пароль пользователя по умолчанию
    volumes:                              # Объявление томов для хранения данных RabbitMQ
      - rabbitmq:/var/lib/rabbitmq        # Привязка тома для постоянного хранения данных RabbitMQ

volumes:      # Объявление именованных томов для постоянного хранения данных
  wordpress:  # Том для хранения данных WordPress
  db:         # Том для хранения данных MySQL
  rabbitmq:   # Том для хранения данных RabbitMQ