diff --git a/arutunyan_dmitry_lab_1/README.md b/arutunyan_dmitry_lab_1/README.md new file mode 100644 index 0000000..d3b2ffc --- /dev/null +++ b/arutunyan_dmitry_lab_1/README.md @@ -0,0 +1,123 @@ + +## Лабораторная работа 1. Вариант 4. +### Задание +- Установить средство контейнеризации `docker`. +- Изучить применение и принципы `docker`. +- Изучить утилиту `docker-compose` и структуру файла `docker-compose.yaml`. +- Развернуть не менее 3х различных сервисов при помощи `docker-compose`. + +### Как запустить +В директории с файлом характеристик `docker-compose.yaml` выполнить команду: +``` +docker-compose -f docker-compose.yaml up +``` +Это запустит `docker-compose`, который развернёт в общем контейнере 4 контейнера с сервисами по собранным образам. + +### Раззворачиваемые сервисы +- `mysql` - СУБД для создания БД, которую будут использовать другие сервисы, +- `redmine` - открытая веб-платформа управления проектами и задачами, +- `wordpress`- популярная платформа для управления контентом (CMS), +- `mediawiki` - свободная и открытая вики-платформа, разработанная для создания и совместного редактирования веб-страниц. + +### Описание работы +Структура файла `docker-compose.yaml`: +```yaml +|_ version: +|_ mainproperties: +|_ services: +|____ serivce1: +|________ service1properties: +|____ serivce2: +|________ service2properties: +``` + +#### Разворачивание сервиса MySQL +Конфигурации сервиса в `docker-compose.yaml`: +```yaml +mysql: + image: mysql + container_name: my-mysql-container + restart: always + environment: + MYSQL_DATABASE: my_wiki + MYSQL_USER: wiki_user + MYSQL_PASSWORD: my_secret_password + MYSQL_RANDOM_ROOT_PASSWORD: "yes" + volumes: + - ./data:/var/lib/mysql +``` +Где `image` отвечает за образ сборки, `container_name` указывает имя контейнера, `restart` определяет сценарий перезапуска сервиса, `environment` описывает настройки окружения (в данном случае название БД, пользователя, пароль), `volumes` указывает локальные файлы, необходимые для переноса в сборочный контейнер. + +#### Разворачивание сервиса Redmine +Конфигурации сервиса в `docker-compose.yaml`: +```yaml +redmine: + depends_on: + - mysql + image: redmine + container_name: my-redmine-container + ports: + - 8081:3000 + volumes: + - ./data:/usr/src/redmine/files + environment: + - REDMINE_DB_MYSQL=mysql + - REDMINE_DB_DATABASE=my_wiki + - REDMINE_DB_USERNAME=wiki_user + - REDMINE_DB_PASSWORD=my_secret_password +``` +Где `depends_on` указывает на перечень зависимых сервисов, после запуска которых данный сервис может быть запущен, `image` отвечает за образ сборки, `container_name` указывает имя контейнера, `ports` указывает порт, на котором сервис будет запущен внутри сети, `volumes` указывает локальные файлы, необходимые для переноса в сборочный контейнер, `environment` описывает настройки окружения (в данном случае хост БД, название БД, пользователя, пароль). + +#### Разворачивание сервиса Wordpress +Конфигурации сервиса в `docker-compose.yaml`: +```yaml + wordpress: + depends_on: + - mysql + image: wordpress + container_name: my-wordpress-container + ports: + - 8082:80 + volumes: + - ./wp-content:/var/www/html/wp-content + environment: + - WORDPRESS_DB_HOST=mysql + - WORDPRESS_DB_USER=wiki_user + - WORDPRESS_DB_PASSWORD=my_secret_password + - WORDPRESS_DB_NAME=my_wiki +``` +Где `depends_on` указывает на перечень зависимых сервисов, после запуска которых данный сервис может быть запущен, `image` отвечает за образ сборки, `container_name` указывает имя контейнера, `ports` указывает порт, на котором сервис будет запущен внутри сети, `volumes` указывает локальные файлы, необходимые для переноса в сборочный контейнер, `environment` описывает настройки окружения (в данном случае хост БД, название БД, пользователя, пароль). + +#### Разворачивание сервиса MediaWiki +Конфигурации сервиса в `docker-compose.yaml`: +```yaml + mediawiki: + depends_on: + - mysql + image: mediawiki + container_name: my-mediawiki-container + ports: + - 8083:80 + restart: always + environment: + MW_INSTALL_PATH: /var/www/html + MW_USE_INSTALLED: 'true' + MW_ADMIN_NAME: admin + MW_ADMIN_PASS: my_secret_password + MW_DB_PORT: 3306 + MW_DB_HOST: mysql + MW_DB_NAME: my_wiki + MW_DB_USER: wiki_user + MW_DB_PASS: my_secret_password + volumes: + - ./config:/var/www/html/config +``` +Где `depends_on` указывает на перечень зависимых сервисов, после запуска которых данный сервис может быть запущен, `image` отвечает за образ сборки, `container_name` указывает имя контейнера, `ports` указывает порт, на котором сервис будет запущен внутри сети, `restart` определяет сценарий перезапуска сервиса, `environment` описывает настройки окружения (в данном случае путь установки, имя админа, порт БД, хост БД, название БД, пользователя, пароль), `volumes` указывает локальные файлы, необходимые для переноса в сборочный контейнер. + +#### Запуск сервисов +Выполнение команды docker-compose и log-журнал контейнеров: +![](pic1.png "") +![](pic2.png "") + +### Видео +https://youtu.be/Y7B9pzEn5Sc \ No newline at end of file diff --git a/arutunyan_dmitry_lab_1/docker-compose.yaml b/arutunyan_dmitry_lab_1/docker-compose.yaml new file mode 100644 index 0000000..c1ec186 --- /dev/null +++ b/arutunyan_dmitry_lab_1/docker-compose.yaml @@ -0,0 +1,64 @@ +version: "3" +services: + mysql: + image: mysql + container_name: my-mysql-container + restart: always + environment: + MYSQL_DATABASE: my_wiki + MYSQL_USER: wiki_user + MYSQL_PASSWORD: my_secret_password + MYSQL_RANDOM_ROOT_PASSWORD: "yes" + volumes: + - ./data:/var/lib/mysql + + redmine: + depends_on: + - mysql + image: redmine + container_name: my-redmine-container + ports: + - 8081:3000 + volumes: + - ./data:/usr/src/redmine/files + environment: + - REDMINE_DB_MYSQL=mysql + - REDMINE_DB_DATABASE=my_wiki + - REDMINE_DB_USERNAME=wiki_user + - REDMINE_DB_PASSWORD=my_secret_password + + wordpress: + depends_on: + - mysql + image: wordpress + container_name: my-wordpress-container + ports: + - 8082:80 + volumes: + - ./wp-content:/var/www/html/wp-content + environment: + - WORDPRESS_DB_HOST=mysql + - WORDPRESS_DB_USER=wiki_user + - WORDPRESS_DB_PASSWORD=my_secret_password + - WORDPRESS_DB_NAME=my_wiki + + mediawiki: + depends_on: + - mysql + image: mediawiki + container_name: my-mediawiki-container + ports: + - 8083:80 + restart: always + environment: + MW_INSTALL_PATH: /var/www/html + MW_USE_INSTALLED: 'true' + MW_ADMIN_NAME: admin + MW_ADMIN_PASS: my_secret_password + MW_DB_PORT: 3306 + MW_DB_HOST: mysql + MW_DB_NAME: my_wiki + MW_DB_USER: wiki_user + MW_DB_PASS: my_secret_password + volumes: + - ./config:/var/www/html/config \ No newline at end of file diff --git a/arutunyan_dmitry_lab_1/pic1.png b/arutunyan_dmitry_lab_1/pic1.png new file mode 100644 index 0000000..a0bdda7 Binary files /dev/null and b/arutunyan_dmitry_lab_1/pic1.png differ diff --git a/arutunyan_dmitry_lab_1/pic2.png b/arutunyan_dmitry_lab_1/pic2.png new file mode 100644 index 0000000..b7b6fea Binary files /dev/null and b/arutunyan_dmitry_lab_1/pic2.png differ