6.8 KiB
Лабораторная работа 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
:
|_ version:
|_ mainproperties:
|_ services:
|____ serivce1:
|________ service1properties:
|____ serivce2:
|________ service2properties:
Разворачивание сервиса MySQL
Конфигурации сервиса в docker-compose.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
:
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
:
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
:
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-журнал контейнеров: