services:
  db:  # Сервис базы данных PostgreSQL
    image: postgres:latest  # Используем последний образ PostgreSQL
    container_name: db  # Имя контейнера
    environment:  # Переменные окружения для настройки PostgreSQL
      POSTGRES_USER: postgres  # Имя пользователя для доступа к БД
      POSTGRES_PASSWORD: example  # Пароль для доступа к БД
      POSTGRES_DB: postgres  # Имя создаваемой базы данных
    volumes:  # Место для хранения данных базы данных
      - db_data:/var/lib/postgresql  # Volume для хранения данных PostgreSQL

  mediawiki:  # Сервис MediaWiki
    image: mediawiki  # Используем образ MediaWiki
    container_name: mediawiki  # Имя контейнера
    ports:
      - "8080:80"  # Пробрасываем порт 8080 на хост для доступа к интерфейсу MediaWiki
    volumes:  # Место для хранения медиафайлов MediaWiki
      - mediawiki_data:/var/www/html/images  # Volume для хранения загруженных изображений и медиафайлов
    environment:  # Переменные окружения для настройки MediaWiki
      - MEDIAWIKI_DB_HOST=db  # Хост базы данных (имя сервиса db)
      - MEDIAWIKI_DB_NAME=mediawiki  # Имя базы данных, используемой MediaWiki
      - MEDIAWIKI_DB_USER=root  # Имя пользователя для доступа к базе данных
      - MEDIAWIKI_DB_PASSWORD=example  # Пароль для доступа к базе данных
    depends_on:  # Указываем зависимости для запуска
      - db  # MediaWiki зависит от сервиса базы данных

  redmine:  # Сервис Redmine
    image: redmine  # Используем образ Redmine
    container_name: redmine  # Имя контейнера
    ports:
      - "8081:3000"  # Пробрасываем порт 8081 на хост для доступа к интерфейсу Redmine
    volumes:  # Место для хранения файлов Redmine
      - redmine_data:/usr/src/redmine/files  # Volume для хранения загруженных файлов в Redmine
    environment:  # Переменные окружения для настройки Redmine
      - REDMINE_DB_POSTGRESQL=db  # Хост базы данных (имя сервиса db)
      - REDMINE_DB_DATABASE=redmine  # Имя базы данных, используемой Redmine
      - REDMINE_DB_USERNAME=root  # Имя пользователя для доступа к базе данных
      - REDMINE_DB_PASSWORD=example  # Пароль для доступа к базе данных
    depends_on:  # Указываем зависимости для запуска
      - db  # Redmine зависит от сервиса базы данных

volumes:  # Определяем именованные тома для хранения данных
  mediawiki_data:  # Volume для хранения медиафайлов MediaWiki
  redmine_data:    # Volume для хранения загруженных файлов Redmine
  db_data:         # Volume для хранения данных базы данных PostgreSQL