# Лабораторная работа №1 - Знакомство с docker и docker-compose
Цель: изучение современных технологий контейнеризации.
Задачи:
1. Установить средство контейнеризации docker.
2. Изучить применение и принципы docker.
3. Изучить утилиту docker-compose и структуру файла docker-compose.yml.
4. Развернуть не менее 3х различных сервисов при помощи docker-compose.
5. Оформить отчёт в формате Markdown и создать Pull Request в git-репозитории.
## Разворачивание сервисов
Предлагается развернуть не менее 3х сервисов через docker-compose из списка ниже:
1. mediawiki
   Движок вики.
2. redmine
   Система учёта багов, т.е. баг-трекер.
3. wordpress
   Популярная система управления контентом.
4. drupal
   Ещё одна популярная система управления контентом.
5. moodle
   Система для обучения, на которой построена <https://lms.ulstu.ru>.
6. gitea
   Сервис для хранения репозиториев git, на котором работает этот репозиторий.
Требования и docker-compose:
* Несколько контейнеров.
* Хотя бы один volume.
* Хотя бы один порт, проброшенный на хост.
При этом разворачивание системы должно пройти до конца.
Например, должен быть создан администратор и система должна корректно функционировать.
Это необходимо будет предоставить в отчёте, поэтому не забывайте делать скриншоты.

**Выбранные сервисы:** 
1. mediawiki
2. wordpress
3. gitea


![image1.png](./image1.png)

### Объяснение кода: 
1. Сеть
Создание сети:  \
Определена сеть gitea для соединения контейнеров Gitea. \
external: false: Сеть создаётся автоматически и не является внешней.

2. Сервисы
MediaWiki \
Сервис mediawiki \ 
image: mediawiki: Используется официальный образ MediaWiki. \
restart: always: Контейнер будет автоматически перезапускаться при сбое. \
ports: - 1337:80: Перенаправление порта 80 контейнера на порт 1337 хоста. \
links: - mediawiki_database: Связь с контейнером mediawiki_database. \ 
volumes: - images:/var/www/html/images: Том для хранения загруженных изображений. \

3. Сервис mediawiki_database \
image: mariadb: Образ MariaDB для базы данных. \
environment: \
MYSQL_DATABASE: my_wiki: Создание базы данных с именем my_wiki. \
MYSQL_USER: wikiuser: Создание пользователя wikiuser. \
MYSQL_PASSWORD: example: Пароль для пользователя. 
MYSQL_RANDOM_ROOT_PASSWORD: 'yes': Генерация случайного пароля для root. \
volumes: - mediawiki_db:/var/lib/mysql: Том для хранения данных базы. 

4. WordPress \
Сервис wp_db (база данных WordPress) \
image: mariadb:10.6.4-focal: Версия образа MariaDB. \
command: Задаёт плагин аутентификации. \
volumes: - wp_db_data:/var/lib/mysql: Том для хранения данных базы. \
environment: \
MYSQL_ROOT_PASSWORD=somewordpress: Пароль для root. \
MYSQL_DATABASE=wordpress, MYSQL_USER=wordpress, MYSQL_PASSWORD=wordpress: Параметры базы данных. \
expose: - 3306 - 33060: Доступность портов для связи между контейнерами. \
5. Сервис wordpress  \
image: wordpress:latest: Образ WordPress. \
volumes: - wp_data:/var/www/html: Том для данных сайта. \
ports: - 52384:80: Доступ к сайту через порт 52384. \
environment: Переменные для подключения к базе wp_db. \
6. Gitea \
Сервис server \
image: gitea/gitea:1.22.3: Образ Gitea версии 1.22.3. \
container_name: gitea: Имя контейнера. \
environment: Параметры UID и GID пользователя. \
networks: - gitea: Подключение к сети gitea. \
volumes: \
gitea:/gitea:/data: Том для данных. \
/etc/timezone:/etc/timezone:ro, /etc/localtime:/etc/localtime:ro: Синхронизация времени. \
ports: \
3000:3000: Веб-доступ через порт 3000. \
222:22: SSH доступ через порт 222. \
7. Тома \
Определены тома для хранения данных всех сервисов (images, mediawiki_db, wp_db_data, wp_data, gitea).

   [Ссылка на демонстрацию работы программы](https://vk.com/video547368103_456239599?list=ln-1MGFZQHLn8gSM3rbLg )