services:
  mediawiki:                      # Сервис MediaWiki
    image: mediawiki              # Образ MediaWiki из Docker Hub
    restart: always               # Автоматический перезапуск контейнера при сбое
    ports:
      - 8080:80                   # Проброс порта 80 из контейнера на порт 8080 хоста
    depends_on:
      - mariadb                   # Запуск MediaWiki только после запуска MariaDB
    volumes:
      - images:/var/www/html/images  # Монтирование volume для хранения данных
      - ./LocalSettings.php:/var/www/html/LocalSettings.php  # Монтирование локального файла настроек (ЗАКОММЕНТИРОВАТЬ ДО НАСТРОЙКИ)

  mariadb:                        # Сервис MariaDB
    image: mariadb                # Образ MariaDB из Docker Hub
    restart: always               # Автоматический перезапуск контейнера при сбое
    environment:                  # Переменные окружения для настройки базы данных
      MYSQL_DATABASE: my_wiki      # Название базы данных
      MYSQL_USER: wikiuser         # Имя пользователя для доступа к базе данных
      MYSQL_PASSWORD: password     # Пароль для пользователя
      MYSQL_RANDOM_ROOT_PASSWORD: 'yes'  # Случайный пароль для пользователя root
    volumes:
      - db_maria:/var/lib/mysql          # Монтирование volume для хранения данных базы

  drupal:                         # Сервис Drupal
    image: drupal:10-apache        # Образ Drupal 
    ports:
      - 3000:80                   # Проброс порта 80 из контейнера на порт 3000 хоста
    volumes:                      # Монтирование volumes для хранения локальных файлов Drupal
      - drupal-modules:/var/www/html/modules
      - drupal-profiles:/var/www/html/profiles
      - drupal-themes:/var/www/html/themes
      - drupal-sites:/var/www/html/sites
    restart: always                # Автоматический перезапуск контейнера при сбое
    depends_on:
      - postgres                   # Запуск Drupal только после запуска Postgres

  postgres:                       # Сервис PostgreSQL
    image: postgres:16             # Образ PostgreSQL 
    environment:
      POSTGRES_PASSWORD: password  # Пароль для пользователя postgres
    restart: always                # Автоматический перезапуск контейнера при сбое
    volumes:
      - db_postgres:/var/lib/postgresql   # Монтирование volume для хранения данных базы

volumes:
  images:                         # Volume для хранения изображений MediaWiki
  db_maria:                       # Volume для хранения данных MariaDB
  db_postgres:                    # Volume для хранения данных Postgres
  drupal-modules:                 # Volumes для хранения локальных данных Drupal
  drupal-profiles:                # Volumes для хранения локальных данных Drupal
  drupal-themes:                  # Volumes для хранения локальных данных Drupal
  drupal-sites:                   # Volumes для хранения локальных данных Drupal