diff --git a/putilin_pavel_lab_1/README.md b/putilin_pavel_lab_1/README.md new file mode 100644 index 0000000..29c382a --- /dev/null +++ b/putilin_pavel_lab_1/README.md @@ -0,0 +1,169 @@ +# Лабораторная работа №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 +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 \ No newline at end of file diff --git a/putilin_pavel_lab_1/docker-compose.yml b/putilin_pavel_lab_1/docker-compose.yml new file mode 100644 index 0000000..ec08a6c --- /dev/null +++ b/putilin_pavel_lab_1/docker-compose.yml @@ -0,0 +1,67 @@ +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:latest + 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 + + gitea: + image: gitea/gitea:latest + container_name: gitea + ports: + - "8091:3000" + environment: + - USER_UID=1000 + - USER_GID=1000 + volumes: + - gitea_data:/data + + redmine: + image: redmine:latest + container_name: redmine + ports: + - "8090: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:latest + 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 + + +volumes: + wordpress_data: + db_data: + redmine_db_data: + gitea_data: