123 lines
6.8 KiB
Markdown
123 lines
6.8 KiB
Markdown
|
||
## Лабораторная работа 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 |