version: '3.9' # Версия Docker Compose

services:
  # Gitea сервис
  gitea:
    image: gitea/gitea:latest # Образ Gitea для запуска сервиса
    container_name: gitea # Имя контейнера для удобства 
    environment: # Переменные среды
      USER_UID: 1000 # UID пользователя внутри контейнера
      USER_GID: 1000 # GID пользователя внутри контейнера
      GITEA__database__DB_TYPE: sqlite3 # Тип бд (SQLite для простоты)
      GITEA__database__PATH: /data/gitea/gitea.db # Путь к базе данных 
      GITEA__server__ROOT_URL: http://localhost:3000 # URL для доступа 
      GITEA__server__HTTP_PORT: 3000 # Порт для веб-интерфейса 
    volumes:
      - gitea_data:/data # Монтирование директории данных для сохранения данных
    ports:
      - "3000:3000" # Порт для доступа к веб-интерфейсу Gitea
      - "2222:22" # SSH порт для клонирования репозиториев
    restart: always # Автоматический перезапуск контейнера в случае сбоя

  # Redmine сервис
  redmine:
    image: redmine # Образ Redmine для запуска сервиса
    restart: always # Автоматический перезапуск контейнера
    ports:
      - 8080:3000 # Порт для доступа к веб-интерфейсу 
    environment: # Переменные среды
      REDMINE_DB_MYSQL: db # Имя хоста бд для подключения 
      REDMINE_DB_PASSWORD: example # Пароль для подключения к базе данных 

  # MySQL база данных для Redmine
  db:
    image: mysql:8.0 # Образ MySQL для бд
    restart: always # Автоматический перезапуск контейнера
    environment: # Переменные среды
      MYSQL_ROOT_PASSWORD: example # Пароль пользователя root для MySQL
      MYSQL_DATABASE: redmine # Имя бд для Redmine 
      MYSQL_USER: user # Пользователь MySQL
      MYSQL_PASSWORD: password # Пароль для пользователя MySQL
    volumes:
      - db_data:/var/lib/mysql # Монтирование для сохранения данных бд

volumes: # Именованные тома
  gitea_data: # Том для данных Gitea
  db_data: # Том для данных MySQL