version: '3'  # версия формата Docker Compose файла. '3' самая широкоиспользуемая.

services:  # лист сервисов определенных в файле Docker Compose.

  mediawiki:  # название сервиса для контейнера MediaWiki.
    image: mediawiki  # docker image который используется для этого севиса. Будет подтягиваться из Docker Hub, если его нет локально.
    ports:
      - "8080:80"  # отображает порт 80 в контейнере на порт 8080 на хостовой машине.
    volumes:
      - mediawiki_data:/var/www/html  # создает volume с именем 'mediawiki_data' для сохранения данных.
    environment:
      - MYSQL_HOST=mysql  # переменная среды для MySQL адреса хоста.
      - MYSQL_USER=root  # переменная среды для MySQL имени пользователя.
      - MYSQL_PASSWORD=password  # переменная среды для пароля MySQL.
      - MYSQL_DB=mediawiki  # переменная среды для имени базы данных, используемой MediaWiki.
    depends_on:
      - mysql  # этот сервис зависит от 'mysql' сервиса.

  drupal:  # Имя сервиса для контейнера Drupal.
    image: drupal  # docker image, который будет использоваться для этого сервиса.
    ports:
      - "8081:80"  # Отображает порт 80 в контейнере с портом 8081 на хостовой машине.
    volumes:
      - drupal_data:/var/www/html  # Создает volume с именем "drupal_data" для сохранения данных.
    environment:
      - MYSQL_HOST=mysql  # переменная среды для MySQL адреса хоста.
      - MYSQL_USER=root  # переменная среды для MySQL имени пользователя.
      - MYSQL_PASSWORD=password  # переменная среды для пароля MySQL.
      - MYSQL_DB=drupal  # переменная среды для имени базы данных, используемой Drupal.
    depends_on:
      - mysql  # этот сервис зависит от 'mysql' сервиса.

  wordpress:  # название сервиса для контейнера WordPress.
    image: wordpress  # docker image который используется для этого севиса.
    ports:
      - "8082:80"  # Отображает порт 80 в контейнере с портом 8082 на хостовой машине.
    volumes:
      - wordpress_data:/var/www/html  # создает volume с именем 'wordpress_data' для сохранения данных.
    environment:
      - MYSQL_HOST=mysql  # переменная среды для MySQL адреса хоста.
      - MYSQL_USER=root  # переменная среды для MySQL имени пользователя.
      - MYSQL_PASSWORD=password  # переменная среды для пароля MySQL.
      - MYSQL_DB=wordpress  # переменная среды для имени базы данных, используемой WordPress.
    depends_on:
      - mysql  # этот сервис зависит от 'mysql' сервиса.

  mysql:  # название сервиса для контейнера MySQL.
    image: mysql  # docker image который используется для этого севиса.
    environment:
      - MYSQL_ROOT_PASSWORD=password  # переменная среды для MySQL пароля от rootвого пользователя.
      - MYSQL_DATABASE=my_database  # переменная среды для начального имени базы данных.
    volumes:
      - mysql_data:/var/lib/mysql  # Создает volume с именем "mysql_data" для сохранения данных.

volumes:  # список volumes используемых в сервисах.
  mediawiki_data:  # Volume для данных MediaWiki.
  drupal_data:  # Volume для данных Drupal.
  wordpress_data:  # Volume для данных WordPress.
  mysql_data:  # Volume для данных MySQL.