## Лабораторная работа 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