# Лабораторная работа №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 2. В терминале с помощью команды "docker --version" проверить корректность установки 3. Командой "docker-compose --version" проверить версию Docker-Compose 4. Развернуть сервисы ## Сервисы: ## WordPress: 1. Эта строка отвечает за образ сборки: image: wordpress:latest Используем последний официальный образ WordPress. 2. Задание имени контейнера: container_name: wordpress Устанавливается имя контейнера как wordpress. 3. Проброс портов: Порт 80 контейнера пробрасывается на порт 8080 хоста. 4. Тома для хранения данных: volumes: - wordpress_data:/var/www/html Том wordpress_data монтируется в директорию /var/www/html контейнера для хранения данных WordPress. 5. Переменные окружения для 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: имя базы данных. 6. Зависимость от базы данных: depends_on: db Указываем, что WordPress зависит от контейнера с базой данных (db), который должен запуститься первым. ## Redmine: 1. Эта строка отвечает за образ сборки: image: redmine:latest Используем последний официальный образ Redmine. 2. Задание имени контейнера: container_name: redmine Устанавливается имя контейнера как redmine. 3. Проброс портов: ports:"8090:3000" Порт 3000 контейнера пробрасывается на порт 8090 хоста 4. Переменные окружения для 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: пароль пользователя базы данных. 5. Зависимость от базы данных: depends_on: - redmine_db Redmine зависит от контейнера с базой данных redmine_db. ## Gitea: 1. Эта строка отвечает за образ сборки: image: gitea/gitea:latest Используем последний официальный образ Gitea. 2. Задание имени контейнера: container_name: gitea Устанавливается имя контейнера как gitea. 3. Проброс портов: ports:"8091:3000" Порт 3000 контейнера пробрасывается на порт 8091 хоста 4. Тома для хранения данных: volumes: - gitea_data:/data Том gitea_data монтируется в директорию /data контейнера для хранения данных Gitea. 5. Переменные окружения для Gitea: environment: - USER_UID=1000 - USER_GID=1000 ## Ссылка на видео: https://drive.google.com/file/d/1ytamJUnLILeb3UfDOzYtiQJxiXHcWpT0/view?usp=sharing