diff --git a/alkin_ivan_lab_1/README.md b/alkin_ivan_lab_1/README.md new file mode 100644 index 0000000..145600c --- /dev/null +++ b/alkin_ivan_lab_1/README.md @@ -0,0 +1,161 @@ +Вот перефразированный текст: + +--- + +# Лабораторная работа №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 \ No newline at end of file diff --git a/alkin_ivan_lab_1/docker-compose.yml b/alkin_ivan_lab_1/docker-compose.yml new file mode 100644 index 0000000..932b043 --- /dev/null +++ b/alkin_ivan_lab_1/docker-compose.yml @@ -0,0 +1,68 @@ +version: '3' + +services: + wordpress: + image: wordpress:latest + container_name: wordpress + ports: + - "8080:80" + environment: + WORDPRESS_DB_HOST: db + WORDPRESS_DB_USER: example_user + WORDPRESS_DB_PASSWORD: example_password + WORDPRESS_DB_NAME: example_db + volumes: + - wordpress_data:/var/www/html + depends_on: + - db + + db: + image: mysql:5.7 + container_name: wordpress_db + environment: + MYSQL_DATABASE: example_db + MYSQL_USER: example_user + MYSQL_PASSWORD: example_password + MYSQL_ROOT_PASSWORD: root_password + volumes: + - db_data:/var/lib/mysql + + redmine: + image: redmine:latest + container_name: redmine + ports: + - "8081:3000" + environment: + REDMINE_DB_MYSQL: redmine_db + REDMINE_DB_USERNAME: redmine_user + REDMINE_DB_PASSWORD: redmine_password + depends_on: + - redmine_db + + redmine_db: + image: mysql:5.7 + container_name: redmine_db + environment: + MYSQL_DATABASE: redmine + MYSQL_USER: redmine_user + MYSQL_PASSWORD: redmine_password + MYSQL_ROOT_PASSWORD: root_password + volumes: + - redmine_db_data:/var/lib/mysql + + gitea: + image: gitea/gitea:latest + container_name: gitea + ports: + - "8082:3000" + environment: + - USER_UID=1000 + - USER_GID=1000 + volumes: + - gitea_data:/data + +volumes: + wordpress_data: + db_data: + redmine_db_data: + gitea_data: