diff --git a/kalyshev_yan_lab_1/.gitignore b/kalyshev_yan_lab_1/.gitignore new file mode 100644 index 0000000..ff9e324 --- /dev/null +++ b/kalyshev_yan_lab_1/.gitignore @@ -0,0 +1,6 @@ +gitea/ +gitea-db/ +images/ +LocalSettings.php +mediawiki-db/ +readmine-db/ diff --git a/kalyshev_yan_lab_1/README.md b/kalyshev_yan_lab_1/README.md new file mode 100644 index 0000000..9ff5287 --- /dev/null +++ b/kalyshev_yan_lab_1/README.md @@ -0,0 +1,94 @@ +# Калышев Ян ПИбд-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) diff --git a/kalyshev_yan_lab_1/docker-compose.yml b/kalyshev_yan_lab_1/docker-compose.yml new file mode 100644 index 0000000..1bbf97a --- /dev/null +++ b/kalyshev_yan_lab_1/docker-compose.yml @@ -0,0 +1,81 @@ +services: + gitea: + image: gitea/gitea:latest + environment: + USER_UID: 1000 + USER_GID: 1000 + GITEA__database__DB_TYPE: mysql + GITEA__database__HOST: gitea-db:3306 + GITEA__database__NAME: gitea + GITEA__database__USER: gitea + GITEA__database__PASSWD: gitea + restart: always + links: + - gitea-db + depends_on: + - gitea-db + volumes: + - ./gitea:/data + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + ports: + - "3000:3000" + - "222:22" + + gitea-db: + image: mysql:8.0 + restart: always + environment: + MYSQL_ROOT_PASSWORD: gitea + MYSQL_USER: gitea + MYSQL_PASSWORD: gitea + MYSQL_DATABASE: gitea + volumes: + - ./gitea-db:/var/lib/mysql + + redmine: + image: redmine:latest + restart: always + ports: + - 8080:3000 + links: + - readmine-db + depends_on: + - readmine-db + environment: + REDMINE_DB_MYSQL: readmine-db + REDMINE_DB_PASSWORD: example + REDMINE_SECRET_KEY_BASE: supersecretkey + + readmine-db: + image: mysql:8.0 + restart: always + environment: + MYSQL_ROOT_PASSWORD: example + MYSQL_DATABASE: redmine + volumes: + - ./readmine-db:/var/lib/mysql + + mediawiki: + image: mediawiki:latest + restart: always + ports: + - 8081:80 + links: + - mediawiki-db + depends_on: + - mediawiki-db + volumes: + - ./images:/var/www/html/images + - ./LocalSettings.php:/var/www/html/LocalSettings.php + + mediawiki-db: + image: mariadb + restart: always + environment: + MYSQL_DATABASE: my_wiki + MYSQL_USER: wikiuser + MYSQL_PASSWORD: example + MYSQL_RANDOM_ROOT_PASSWORD: "yes" + volumes: + - ./mediawiki-db:/var/lib/mysql