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