diff --git a/zhimolostnova_anna_lab_1/.env b/zhimolostnova_anna_lab_1/.env new file mode 100644 index 0000000..2f3051d --- /dev/null +++ b/zhimolostnova_anna_lab_1/.env @@ -0,0 +1,15 @@ +# Moodle +MARIADB_USER=moodle_user +MARIADB_ROOT_PASSWORD=moodle_root_password +MARIADB_PASSWORD=moodle_password +MARIADB_DATABASE=moodle_db + +# WordPress +MYSQL_ROOT_PASSWORD=wordpress_root_password +MYSQL_DATABASE=wordpress_db +MYSQL_USER=wordpress_user +MYSQL_PASSWORD=wordpress_password + +# Ports +MOODLE_PORT=80 +WORDPRESS_PORT=8081 diff --git a/zhimolostnova_anna_lab_1/README.md b/zhimolostnova_anna_lab_1/README.md new file mode 100644 index 0000000..5332713 --- /dev/null +++ b/zhimolostnova_anna_lab_1/README.md @@ -0,0 +1,69 @@ +# Отчет по лабораторной работе №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. Убедиться, что установлены необходимые технологии: + 1.1. Docker: Платформа для контейнеризации приложений. + 1.2. Docker Compose: Инструмент для запуска многоконтейнерных приложений на основе `docker-compose.yaml`. Обычно поставляется вместе с Docker. Чтобы проверить, установлена ли утилита, нужно запустить команду: +```bash + docker-compose --version +``` + +2. В директории, где находится файл `docker-compose.yaml`, выполнить следующую команду для запуска всех сервисов: +```bash + docker compose up -d +``` +Эта команда запустит контейнеры в фоновом режиме. Для отслеживания процесса можно использовать команду без флага `-d`, чтобы контейнеры запускались в режиме вывода логов. + +3. После успешного запуска можно перейти в браузер и проверить: + 3.1. Moodle доступен по адресу: [http://localhost:80](http://localhost:80) (или по порту, указанному в переменной `MOODLE_PORT`). + 3.2. 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) \ No newline at end of file diff --git a/zhimolostnova_anna_lab_1/docker-compose.yaml b/zhimolostnova_anna_lab_1/docker-compose.yaml new file mode 100644 index 0000000..0f021ef --- /dev/null +++ b/zhimolostnova_anna_lab_1/docker-compose.yaml @@ -0,0 +1,62 @@ +services: + mariadb: # Определение сервиса + image: bitnami/mariadb:11.4 # Имя образа docker и его версия (предпочтиельно указывать версию явно, вместо использования latest) + container_name: mariadb # Имя контейнера + environment: # Переменные окружения + - MARIADB_USER=${MARIADB_USER} # Имя пользователя + - MARIADB_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD} # Пароль для пользователя root + - MARIADB_PASSWORD=${MARIADB_PASSWORD} # Пароль для пользователя + - MARIADB_DATABASE=${MARIADB_DATABASE} # Имя базы данных + volumes: # Настройка volumes для хранения данных + - moodle_db_data:/bitnami/mariadb # Хранение данных в volume moodle_db_data + + # Далее комментарии идентичны + wordpress_db: + image: mariadb:11.4 + container_name: wordpress_db + environment: + MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} + MYSQL_DATABASE: ${MYSQL_DATABASE} + MYSQL_USER: ${MYSQL_USER} + MYSQL_PASSWORD: ${MYSQL_PASSWORD} + volumes: + - wordpress_db_data:/var/lib/mysql # Хранение данных в volume wordpress_db_data + + moodle: + image: bitnami/moodle:4.4 + container_name: moodle + environment: + - MOODLE_DATABASE_HOST=mariadb # Указание хоста базы данных + - MOODLE_DATABASE_PORT_NUMBER=3306 + - MOODLE_DATABASE_NAME=${MARIADB_DATABASE} + - MOODLE_DATABASE_USER=${MARIADB_USER} + - MOODLE_DATABASE_PASSWORD=${MARIADB_PASSWORD} + volumes: + - moodle_data:/bitnami/moodle # Хранение данных в volume moodle_data + - moodledata_data:/bitnami/moodledata # Хранение данных (moodledata) в отдельном volume + depends_on: # Зависимость от сервиса moodle_db. Данный сервис не запустится, пока не запустится moodle_db + - mariadb + ports: # Проброс порта для доступа + - "${MOODLE_PORT}:8080" + + wordpress: + image: wordpress:6 + container_name: wordpress + environment: + WORDPRESS_DB_HOST: wordpress_db + WORDPRESS_DB_USER: ${MYSQL_USER} + WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD} + WORDPRESS_DB_NAME: ${MYSQL_DATABASE} + volumes: + - wordpress_data:/var/www/html # Хранение данных в volume wordpress_data + depends_on: # Зависимость от сервиса wordpress_db, Данный сервис не запустится, пока не запустится wordpress_db + - wordpress_db + ports: + - "${WORDPRESS_PORT}:80" + +volumes: # Определение volumes для хранения данных + moodle_db_data: + wordpress_db_data: + moodle_data: + moodledata_data: + wordpress_data: