diff --git a/kadyrov_aydar_lab_1/Image_1.png b/kadyrov_aydar_lab_1/Image_1.png new file mode 100644 index 0000000..8725f2e Binary files /dev/null and b/kadyrov_aydar_lab_1/Image_1.png differ diff --git a/kadyrov_aydar_lab_1/Image_2.png b/kadyrov_aydar_lab_1/Image_2.png new file mode 100644 index 0000000..0d1e3d9 Binary files /dev/null and b/kadyrov_aydar_lab_1/Image_2.png differ diff --git a/kadyrov_aydar_lab_1/Image_3.png b/kadyrov_aydar_lab_1/Image_3.png new file mode 100644 index 0000000..e075b91 Binary files /dev/null and b/kadyrov_aydar_lab_1/Image_3.png differ diff --git a/kadyrov_aydar_lab_1/Image_4_Work.png b/kadyrov_aydar_lab_1/Image_4_Work.png new file mode 100644 index 0000000..e349eb3 Binary files /dev/null and b/kadyrov_aydar_lab_1/Image_4_Work.png differ diff --git a/kadyrov_aydar_lab_1/README.md b/kadyrov_aydar_lab_1/README.md new file mode 100644 index 0000000..249e8a3 --- /dev/null +++ b/kadyrov_aydar_lab_1/README.md @@ -0,0 +1,173 @@ +# Лабораторная работа №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** + Система для обучения, на которой построена . +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. + +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:"8081:3000" + +Порт 3000 контейнера пробрасывается на порт 8081 хоста + +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:"8082:3000" + +Порт 3000 контейнера пробрасывается на порт 8082 хоста + +4. Тома для хранения данных: + +volumes: + - gitea_data:/data + +Том gitea_data монтируется в директорию /data контейнера для хранения данных Gitea. + +5. Переменные окружения для Gitea: + +environment: + - USER_UID=1000 + - USER_GID=1000 + +## Видео по ссылку: + +https://vk.com/video64471408_456239204?list=ln-0pkqwQsSiTkihNDILH \ No newline at end of file diff --git a/kadyrov_aydar_lab_1/docker-compose.yml b/kadyrov_aydar_lab_1/docker-compose.yml new file mode 100644 index 0000000..932b043 --- /dev/null +++ b/kadyrov_aydar_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: