DAS_2024_1/kadyrov_aydar_lab_1
2024-10-21 02:36:18 +04:00
..
docker-compose.yml kadyrov_aydar_lab_1 2024-10-21 02:36:18 +04:00
Image_1.png kadyrov_aydar_lab_1 2024-10-21 02:36:18 +04:00
Image_2.png kadyrov_aydar_lab_1 2024-10-21 02:36:18 +04:00
Image_3.png kadyrov_aydar_lab_1 2024-10-21 02:36:18 +04:00
Image_4_Work.png kadyrov_aydar_lab_1 2024-10-21 02:36:18 +04:00
README.md kadyrov_aydar_lab_1 2024-10-21 02:36:18 +04:00

Лабораторная работа №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. Установил Docker dekstop на свою ОС (Windows)
  2. Открыл терминал и с помощью команды "docker --version" проверил корректность установки
  3. Запустил первый тестовый контейнер с помощью команды "docker run hello-world". (Скрин Image_1)
  4. Попробовал несколько базовых команд.(Скрин Image_2)
  5. C помощью команды "docker-compose --version" проверил версию Docker-Compose. (Скрин Image_3)
  6. Развернул сервисы (Описал ниже)

Объяснение работы кода:

WordPress:

  1. Эта строка отвечает за образ сборки:

image: wordpress:latest

Используем последний официальный образ WordPress.

  1. Задание имени контейнера:

container_name: wordpress

Устанавливается имя контейнера как wordpress.

  1. Проброс портов:

Порт 80 контейнера пробрасывается на порт 8080 хоста.

  1. Тома для хранения данных:

volumes:

  • wordpress_data:/var/www/html

Том wordpress_data монтируется в директорию /var/www/html контейнера для хранения данных WordPress.

  1. Переменные окружения для 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: имя базы данных.

  1. Зависимость от базы данных:

depends_on: db

Указываем, что WordPress зависит от контейнера с базой данных (db), который должен запуститься первым.

Redmine:

  1. Эта строка отвечает за образ сборки:

image: redmine:latest

Используем последний официальный образ Redmine.

  1. Задание имени контейнера:

container_name: redmine

Устанавливается имя контейнера как redmine.

  1. Проброс портов:

ports:"8081:3000"

Порт 3000 контейнера пробрасывается на порт 8081 хоста

  1. Переменные окружения для 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: пароль пользователя базы данных.

  1. Зависимость от базы данных:

depends_on:

  • redmine_db

Redmine зависит от контейнера с базой данных redmine_db.

Gitea:

  1. Эта строка отвечает за образ сборки:

image: gitea/gitea:latest

Используем последний официальный образ Gitea.

  1. Задание имени контейнера:

container_name: gitea

Устанавливается имя контейнера как gitea.

  1. Проброс портов:

ports:"8082:3000"

Порт 3000 контейнера пробрасывается на порт 8082 хоста

  1. Тома для хранения данных:

volumes:

  • gitea_data:/data

Том gitea_data монтируется в директорию /data контейнера для хранения данных Gitea.

  1. Переменные окружения для Gitea:

environment:

  • USER_UID=1000
  • USER_GID=1000

Видео по ссылку:

https://vk.com/video64471408_456239204?list=ln-0pkqwQsSiTkihNDILH