6.0 KiB
Вот перефразированный текст:
Лабораторная работа №1 — Ознакомление с Docker и Docker Compose
Цель: освоение технологий контейнеризации.
Задачи:
- Установить Docker — систему для контейнеризации.
- Изучить основы работы и принципы Docker.
- Изучить утилиту Docker Compose и формат файла docker-compose.yml.
- Развернуть как минимум три различных сервиса с использованием Docker Compose.
- Оформить отчет в формате Markdown и создать Pull Request в git-репозитории.
Развертывание сервисов
Необходимо развернуть не менее трёх сервисов с помощью Docker Compose из предложенного списка:
- MediaWiki — движок для вики-сайтов.
- Redmine — система управления задачами (баг-трекер).
- WordPress — популярная система управления контентом.
- Drupal — другая известная система управления контентом.
- Moodle — платформа для онлайн-обучения, например, используется на https://lms.ulstu.ru.
- Gitea — сервис для хранения git-репозиториев, на котором размещен этот репозиторий.
Требования к конфигурации Docker Compose:
- Использование нескольких контейнеров.
- Наличие хотя бы одного volume.
- Проброс хотя бы одного порта на хост-систему.
Развертывание должно завершиться успешно. Например, должен быть создан администратор, и система должна функционировать корректно. Это будет проверяться в отчете, поэтому не забывайте делать скриншоты.
Ход работы
- Установил Docker Desktop на своей операционной системе (Windows).
- Проверил корректность установки, выполнив команду
docker --version
. - Запустил тестовый контейнер с помощью команды
docker run hello-world
. (Скриншот Image_1) - Опыт с базовыми командами Docker. (Скриншот Image_2)
- Проверил версию Docker Compose командой
docker-compose --version
. (Скриншот Image_3) - Развернул требуемые сервисы (описано ниже).
Пояснение работы кода:
WordPress:
-
Указан образ для сборки:
image: wordpress:latest
Используется последний официальный образ WordPress.
-
Задание имени контейнера:
container_name: wordpress
Контейнер получает имя
wordpress
. -
Проброс портов:
ports: - "8080:80"
Порт 80 контейнера пробрасывается на порт 8080 хоста.
-
Том для хранения данных:
volumes: - wordpress_data:/var/www/html
Создается том
wordpress_data
, монтируемый в каталог/var/www/html
контейнера для хранения данных WordPress. -
Переменные окружения для подключения к базе данных:
environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: example_user WORDPRESS_DB_PASSWORD: example_password WORDPRESS_DB_NAME: example_db
-
Зависимость от базы данных:
depends_on: db
WordPress зависит от контейнера с именем
db
, который должен быть запущен первым.
Redmine:
-
Образ для сборки:
image: redmine:latest
Используется последний официальный образ Redmine.
-
Имя контейнера:
container_name: redmine
Контейнер получает имя
redmine
. -
Проброс портов:
ports: - "8081:3000"
Порт 3000 контейнера пробрасывается на порт 8081 хоста.
-
Переменные окружения для базы данных:
environment: REDMINE_DB_MYSQL: redmine_db REDMINE_DB_USERNAME: redmine_user REDMINE_DB_PASSWORD: redmine_password
-
Зависимость от базы данных:
depends_on: - redmine_db
Gitea:
-
Образ для сборки:
image: gitea/gitea:latest
Используется последний официальный образ Gitea.
-
Имя контейнера:
container_name: gitea
Контейнер получает имя
gitea
. -
Проброс портов:
ports: - "8082:3000"
Порт 3000 контейнера пробрасывается на порт 8082 хоста.
-
Том для хранения данных:
volumes: - gitea_data:/data
Создается том
gitea_data
для хранения данных Gitea. -
Переменные окружения для Gitea:
environment: - USER_UID=1000 - USER_GID=1000
Видео по ссылке находится тут):
https://vkvideo.ru/video150882239_456240340https://vkvideo.ru/video150882239_456240340