# Версия файла docker-compose, которую мы используем
version: '3.8'

# Определение сервисов
# Все последующие готовые образы в services будут взяты с Docker Hub -> image: название:версия
# Далее в services будут использоваться переменные окружения из .env -> ${Переменная_среды}
# Схема пробросов портов -> ports: внешний порт на хосте:внутренний порт в контейнере
services:
  db:
    image: postgres:latest # Готовый образ postgres
    environment:
      - POSTGRES_DB=${POSTGRES_DB} # Имя БД
      - POSTGRES_USER=${POSTGRES_USER} # Пользователь БД
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} # Пароль пользователя БД
    volumes:
      - db_data:/var/lib/postgresql/data # Монтирование volume для постоянного хранения данных БД

  mediawiki:
    image: mediawiki:latest # Готовый образ mediawiki
    ports:
      - "${MEDIAWIKI_PORT}:80" # Проброс порта
    volumes:
      - mediawiki_data:/var/www/html # Монтирование volume для постоянного хранения данных
    environment:
      - MEDIAWIKI_DB_HOST=db # Хост БД
      - MEDIAWIKI_DB_NAME=${MEDIAWIKI_DB_NAME} # Имя БД для MediaWiki
      - MEDIAWIKI_DB_USER=${MEDIAWIKI_DB_USER} # Пользователь БД
      - MEDIAWIKI_DB_PASSWORD=${MEDIAWIKI_DB_PASSWORD} # Пароль пользователя БД

  gitea:
    image: gitea/gitea:latest # Готовый образ gitea
    ports:
      - "${GITEA_WEB_PORT}:3000" # Проброс веб-порта
      - "${GITEA_SSH_PORT}:22" # Проброс SSH-порта
    volumes:
      - gitea_data:/data # Монтирование volume для постоянного хранения данных
    environment:
      - USER_UID=1000 # UID пользователя внутри контейнера
      - USER_GID=1000 # GID пользователя внутри контейнера

# Определение volumes для хранения данных вне контейнеров
volumes:
  mediawiki_data:
  wordpress_data:
  gitea_data:
  db_data: