# Калышев Ян ПИбд-42

## Описание

Этот проект разворачивает среду с баг-трекером Redmine, сервис для хранения репозиториев git Gitea, вики Mediawiki и базы данных для каждого сервиса с использованием Docker Compose. Ниже приведены шаги для запуска и настройки.

## 0. Предварительные действия

Перед запуском Docker Compose выполнил следующие шаги:

1. Установил docker, docker-buildx (пусть будет) и docker-compose для моей операционной системы.
2. Запустил и поставил в автозапуск docker через `sudo systemctl enable --now docker`.

## 1. Структура и запуск сервиса

Файл `docker-compose.yml` содержит описание 6 сервисов:

- gitea (Gitea);
- gitea-db (MySQL для Gitea);
- readmine (Readmine);
- readmine-db (MySQL для Readmine);
- mediawiki (Mediawiki);
- mediawiki-db (MariaDB для Mediawiki);

Запуск всех сервисов происходит через команду:

```bash
docker-compose up -d
```

## 1. Gitea

- **Образ**: `gitea/gitea:latest`
- **Порты**:
  - `3000:3000` — http порт Gitea http://localhost:3000.
  - `222:22` - порт для проброса ssh
- **Переменные окружения**:
  - `USER_UID=1000` - uid пользователя, от которого запускается gitea
  - `USER_GID=1000` - gid пользователя, от которого запускается gitea
  - `GITEA__database__DB_TYPE: mysql` - тип бд
  - `GITEA__database__HOST: gitea-db:3306` - адрес бд
  - `GITEA__database__NAME: gitea` - имя бд
  - `GITEA__database__USER: gitea` - пользователь бд
  - `GITEA__database__PASSWD: gitea` - пароль бд
- **Тома**:
  - `./gitea:/data` — хранение файлов gitea.
  - `/etc/timezone:/etc/timezone:ro` - проброс часового пояса из хост-системы
  - `/etc/localtime:/etc/localtime:ro` - проброс часового пояса из хост-системы
- **links, depends_on**
  - `gitea-db` - для запуска строго после бд и гарантированной связи сетей

## 2. Readmine

- **Образ**: `readmine:latest`
- **Порты**:
  - `8080:3000` — http порт Readmine http://localhost:8080.
- **Переменные окружения**:
  - `REDMINE_DB_MYSQL: readmine-db` - адрес бд
  - `REDMINE_DB_PASSWORD: example` - пароль бд
  - `REDMINE_SECRET_KEY_BASE: supersecretkey` - секретный ключ текущего инстанса
- **links, depends_on**
  - `readmine-db` - для запуска строго после бд и гарантированной связи сетей

## 3. Mediawiki

- **Образ**: `mediawiki:latest`
- **Порты**:
  - `8081:3000` — http порт Mediawiki http://localhost:8081.
- **Тома**:
  - `./images:/var/www/html/images` — хранение изображений mediawiki.
  - `./LocalSettings.php:/var/www/html/LocalSettings.php` - проброс файла с настройками после прохождения первичной настройки
- **links, depends_on**
  - `mediawiki-db` - для запуска строго после бд и гарантированной связи сетей

## 4. Базы данных

- **Образы**: `mariadb`, `mysql:8.0` (в соответствии с офф. документациями)
- **Тома**:
  - `./gitea-db:/var/lib/mysql` — хранение данных бд gitea.
  - `./readmine-db:/var/lib/mysql` — хранение данных бд readmine.
  - `./mediawiki-db:/var/lib/mysql` — хранение данных бд mediawiki.
- **Переменные окружения** - взяты в соответствии с офф. документациями

## 6. Остановка сервисов

Для остановки и удаления всех контейнеров необходимо выполнить команду:

```bash
docker-compose down
```

## 7. Ссылка на видео

[Видео-отчёт Калышев Ян ПИбд-42](https://zyzf.space/s/stezZksnbyqaWYo)
