diff --git a/pupkov_alexey_lab_1/README.md b/pupkov_alexey_lab_1/README.md new file mode 100644 index 0000000..900e264 --- /dev/null +++ b/pupkov_alexey_lab_1/README.md @@ -0,0 +1,92 @@ +# Лабораторная работа №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. 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 ) diff --git a/pupkov_alexey_lab_1/docker-compose.yaml b/pupkov_alexey_lab_1/docker-compose.yaml new file mode 100644 index 0000000..9b3f52b --- /dev/null +++ b/pupkov_alexey_lab_1/docker-compose.yaml @@ -0,0 +1,81 @@ +networks: + gitea: + external: false + +services: + #mediawiki + mediawiki: + image: mediawiki + restart: always + ports: + - 1337:80 + links: + - mediawiki_database + volumes: + - images:/var/www/html/images + + mediawiki_database: + image: mariadb + restart: always + environment: + - MYSQL_DATABASE=mywiki + - MYSQL_USER=mywiki + - MYSQL_PASSWORD=mywiki + - MYSQL_ROOT_PASSWORD=root + volumes: + - mediawiki_db:/var/lib/mysql + + #wordpress + wp_db: + + image: mariadb:10.6.4-focal + command: '--default-authentication-plugin=mysql_native_password' + volumes: + - wp_db_data:/var/lib/mysql + restart: always + environment: + - MYSQL_ROOT_PASSWORD=somewordpress + - MYSQL_DATABASE=wordpress + - MYSQL_USER=wordpress + - MYSQL_PASSWORD=wordpress + expose: + - 3306 + - 33060 + wordpress: + image: wordpress:latest + volumes: + - wp_data:/var/www/html + ports: + - 52384:80 + restart: always + environment: + - WORDPRESS_DB_HOST=wp_db + - WORDPRESS_DB_USER=wordpress + - WORDPRESS_DB_PASSWORD=wordpress + - WORDPRESS_DB_NAME=wordpress + + #gitea + server: + image: gitea/gitea:1.22.3 + container_name: gitea + environment: + - USER_UID=1000 + - USER_GID=1000 + restart: always + networks: + - gitea + volumes: + - gitea:/gitea:/data + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + ports: + - "3000:3000" + - "222:22" + + +volumes: + images: + mediawiki_db: + wp_db_data: + wp_data: + gitea: diff --git a/pupkov_alexey_lab_1/image1.png b/pupkov_alexey_lab_1/image1.png new file mode 100644 index 0000000..74c5523 Binary files /dev/null and b/pupkov_alexey_lab_1/image1.png differ