# Отчет по лабораторной работе №1

## Поставленные задачи

1. Установить средство контейнеризации **docker**.
2. Изучить применение и принципы **docker**.
3. Изучить утилиту **docker-compose** и структуру файла `docker-compose.yml`.
4. Развернуть не менее 3х различных сервисов при помощи **docker-compose**.
5. Оформить отчёт в формате **Markdown** и создать **Pull Request** в git-репозитории.

## Сервисы

1. **Moodle** — платформа для дистанционного обучения (LMS).
2. **WordPress** — популярная система управления контентом (CMS).
3. **MariaDB** — реляционная база данных для хранения данных.

## Запуск работы

1. Убедиться, что установлены необходимые технологии:
   - Docker: Платформа для контейнеризации приложений.
   - Docker Compose: Инструмент для запуска многоконтейнерных приложений на основе `docker-compose.yaml`. Обычно поставляется вместе с Docker. Чтобы проверить, установлена ли утилита, нужно запустить команду:
```bash
    docker-compose --version
```

2. В директории, где находится файл `docker-compose.yaml`, выполнить следующую команду для запуска всех сервисов:
```bash
    docker compose up -d
```
Эта команда запустит контейнеры в фоновом режиме. Для отслеживания процесса можно использовать команду без флага `-d`, чтобы контейнеры запускались в режиме вывода логов.

3. После успешного запуска можно перейти в браузер и проверить:
   - Moodle доступен по адресу: [http://localhost:80](http://localhost:80) (или по порту, указанному в переменной `MOODLE_PORT`).
   - WordPress доступен по адресу: [http://localhost:8081](http://localhost:8081) (или по порту, указанному в переменной `WORDPRESS_PORT`).

## Другие возможности

1. Чтобы остановить контейнеры, нужно выполнить команду:
```bash
    docker compose down
```
Эта команда остановит все контейнеры и удалит их, но сохранит данные в volume-ах.

2. Чтобы поставить контейнеры на паузу (без их остановки), нужно выполнить команду:
```bash
    docker compose pause
```
Контейнеры останутся в памяти, но их процессы будут приостановлены.

3. Чтобы снять паузу, нужно выполнить команду:
```bash
    docker compose unpause
```

## Описание работы

1. **Сервис mariadb:** 
    Этот сервис поднимает контейнер с MariaDB (образ от Bitnami), который хранит данные для Moodle. Здесь используются переменные окружения для конфигурации имени базы данных, паролей и пользователя. Данные базы хранятся в volume moodle_db_data, чтобы они сохранялись даже после перезапуска контейнера.
2. **Сервис wordpress_db:**
    Аналогично mariadb, этот сервис поднимает контейнер MariaDB для базы данных WordPress. Данные хранятся в отдельном volume wordpress_db_data.
3. **Сервис moodle:**
    Это контейнер с приложением Moodle, который зависит от настроенного контейнера базы данных mariadb. Moodle использует переменные окружения для подключения к своей базе данных. Также используются volumes для хранения файлов Moodle и данных, загружаемых пользователями, что обеспечивает их сохранение между перезапусками.
4. **Сервис wordpress:**
    Этот контейнер поднимает приложение WordPress, которое зависит от сервиса базы данных wordpress_db. Volumes используются для хранения файлов WordPress (включая темы, плагины и медиафайлы), что гарантирует их сохранность между перезапусками.

Построчное описание docker-compose.yaml выполнено в самом файле.

## Демонстрационное видео

Видеозапись доступна по адресу: [https://vk.com/video193898050_456240868?list=ln-FRUcWLBDSsFz3YNUEk](https://vk.com/video193898050_456240868?list=ln-FRUcWLBDSsFz3YNUEk)