DAS_2023_1/arutunyan_dmitry_lab_1/README.md

123 lines
6.8 KiB
Markdown
Raw Normal View History

2023-11-12 14:36:18 +04:00
## Лабораторная работа 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