version: '3.8'

# Определение сервисов
services:
  # Сервис базы данных PostgreSQL
  db:
    image: postgres:latest # Готовый образ PostgreSQL
    container_name: postgres_db
    restart: always
    environment:
      - POSTGRES_DB=${POSTGRES_DB:-mydb} # Имя БД
      - POSTGRES_USER=${POSTGRES_USER:-admin} # Пользователь БД
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-admin} # Пароль пользователя БД
    volumes:
      - db_data:/var/lib/postgresql/data # Монтирование тома для хранения данных БД
    networks:
      - app_network

  # Сервис Gitea
  gitea:
    image: gitea/gitea:latest # Готовый образ Gitea
    container_name: gitea
    restart: always
    ports:
      - "${GITEA_WEB_PORT:-3000}:3000" # Проброс веб-порта
      - "${GITEA_SSH_PORT:-2222}:22" # Проброс SSH-порта
    volumes:
      - gitea_data:/data # Монтирование тома для постоянного хранения данных
    environment:
      - USER_UID=1000 # UID пользователя внутри контейнера
      - USER_GID=1000 # GID пользователя внутри контейнера
      - DB_TYPE=postgres
      - DB_HOST=db:5432
      - DB_NAME=${POSTGRES_DB:-mydb}
      - DB_USER=${POSTGRES_USER:-admin}
      - DB_PASSWD=${POSTGRES_PASSWORD:-admin}
    depends_on:
      - db # Gitea запускается после PostgreSQL
    networks:
      - app_network

  # Сервис MediaWiki
  mediawiki:
    image: mediawiki:latest # Готовый образ MediaWiki
    container_name: mediawiki
    restart: always
    ports:
      - "${MEDIAWIKI_PORT:-8080}:80" # Проброс порта
    volumes:
      - mediawiki_data:/var/www/html # Монтирование тома для постоянного хранения данных
    environment:
      - MEDIAWIKI_DB_HOST=db # Хост базы данных
      - MEDIAWIKI_DB_NAME=${POSTGRES_DB:-mydb} # Имя БД для MediaWiki
      - MEDIAWIKI_DB_USER=${POSTGRES_USER:-admin} # Пользователь БД
      - MEDIAWIKI_DB_PASSWORD=${POSTGRES_PASSWORD:-admin} # Пароль пользователя БД
    depends_on:
      - db # MediaWiki запускается после PostgreSQL
    networks:
      - app_network

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

networks:
  app_network:
    driver: bridge