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