# Лабораторная работа №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. mediawiki 2. wordpress 3. gitea ![image1.png](./image1.png) ### Объяснение кода: 1. Сеть Создание сети: \ Определена сеть gitea для соединения контейнеров Gitea. \ external: false: Сеть создаётся автоматически и не является внешней. 2. Сервисы MediaWiki \ Сервис mediawiki \ image: mediawiki: Используется официальный образ MediaWiki. \ restart: always: Контейнер будет автоматически перезапускаться при сбое. \ ports: - 1337:80: Перенаправление порта 80 контейнера на порт 1337 хоста. \ links: - mediawiki_database: Связь с контейнером mediawiki_database. \ volumes: - images:/var/www/html/images: Том для хранения загруженных изображений. \ 3. Сервис mediawiki_database \ image: mariadb: Образ MariaDB для базы данных. \ environment: \ MYSQL_DATABASE: my_wiki: Создание базы данных с именем my_wiki. \ MYSQL_USER: wikiuser: Создание пользователя wikiuser. \ MYSQL_PASSWORD: example: Пароль для пользователя. MYSQL_RANDOM_ROOT_PASSWORD: 'yes': Генерация случайного пароля для root. \ volumes: - mediawiki_db:/var/lib/mysql: Том для хранения данных базы. 4. WordPress \ Сервис wp_db (база данных WordPress) \ image: mariadb:10.6.4-focal: Версия образа MariaDB. \ command: Задаёт плагин аутентификации. \ volumes: - wp_db_data:/var/lib/mysql: Том для хранения данных базы. \ environment: \ MYSQL_ROOT_PASSWORD=somewordpress: Пароль для root. \ MYSQL_DATABASE=wordpress, MYSQL_USER=wordpress, MYSQL_PASSWORD=wordpress: Параметры базы данных. \ expose: - 3306 - 33060: Доступность портов для связи между контейнерами. \ 5. Сервис wordpress \ image: wordpress:latest: Образ WordPress. \ volumes: - wp_data:/var/www/html: Том для данных сайта. \ ports: - 52384:80: Доступ к сайту через порт 52384. \ environment: Переменные для подключения к базе wp_db. \ 6. Gitea \ Сервис server \ image: gitea/gitea:1.22.3: Образ Gitea версии 1.22.3. \ container_name: gitea: Имя контейнера. \ environment: Параметры UID и GID пользователя. \ networks: - gitea: Подключение к сети gitea. \ volumes: \ gitea:/gitea:/data: Том для данных. \ /etc/timezone:/etc/timezone:ro, /etc/localtime:/etc/localtime:ro: Синхронизация времени. \ ports: \ 3000:3000: Веб-доступ через порт 3000. \ 222:22: SSH доступ через порт 222. \ 7. Тома \ Определены тома для хранения данных всех сервисов (images, mediawiki_db, wp_db_data, wp_data, gitea). [Ссылка на демонстрацию работы программы](https://vk.com/video547368103_456239599?list=ln-1MGFZQHLn8gSM3rbLg )