45 lines
3.6 KiB
Markdown
45 lines
3.6 KiB
Markdown
|
# Лабораторная работа №2 - разработка простейшего распределенного приложения
|
|||
|
|
|||
|
## Разработанные приложения
|
|||
|
- worker_0 - программа, которая создаст папки /var/data и сгенерирует в них изначальные данные
|
|||
|
- worker_1 - 1я программа. Вариант 4: Формирует файл /var/result/data.txt так, что каждая строка файла - количество символов в именах файлов из каталога /var/data
|
|||
|
- worker_2 - 2я программа. Вариант 2: Ищет наименьшее число из файла /var/data/data.txt и сохраняет его третью степень в /var/result/result.txt
|
|||
|
|
|||
|
Все программы были разработаны на языке Python.
|
|||
|
|
|||
|
## DockerFile
|
|||
|
Для каждого приложения был создан отдельный dockerfile, который позволяет нам создавать свои образы, на основе которых будут созданы контейнеры. Все файлы лежат в папках программ, описание имеет только dockerfile для `worker_0`, так как по структуре все они одинаковы
|
|||
|
|
|||
|
## DockerCompose
|
|||
|
Для того, чтобы запустить все программы нам нужно создать `docker-compose.yml`, в котором определим как запускать наши сервисы. В отличие от 1й л/р в `docker-compose.yml` были добавлены команды `build`, которая позволяет нам указать путь до dockerfile нашего приложения, а также `depends_on`, которая позволяет установить порядок запусков сервисов. Более подробное описание `docker-compose.yml` находится в нем самом в качестве комментариев
|
|||
|
|
|||
|
## Как запустить
|
|||
|
Для того, чтобы запустить наше распределенное приложение нужно выполнить несколько шагов
|
|||
|
1) Запустить докер приложение. Я использую doker desktop.
|
|||
|
2) Открыть терминал
|
|||
|
3) перейти в папку, в которой лежит `docker-compose.yml`. Сделать это можно с помощью команды `cd`
|
|||
|
3) Запустить команду:
|
|||
|
```
|
|||
|
docker-compose up --build
|
|||
|
```
|
|||
|
После этого будут созданые контейнеры, которые построены на основе образов, указанных в `docker-compose.yml`. В терминале будут отабражено следующее:
|
|||
|
```[+] Running 5/5
|
|||
|
✔ Network morozov_vladimir_lab_2_default Created
|
|||
|
✔ Volume "morozov_vladimir_lab_2_data" Created
|
|||
|
✔ Container morozov_vladimir_lab_2-worker_0-1 Created
|
|||
|
✔ Container morozov_vladimir_lab_2-worker_1-1 Created
|
|||
|
✔ Container morozov_vladimir_lab_2-worker_2-1 Created
|
|||
|
Attaching to worker_0-1, worker_1-1, worker_2-1
|
|||
|
worker_0-1 | Start generating data
|
|||
|
worker_0-1 | Create dir and files
|
|||
|
worker_0-1 exited with code 0
|
|||
|
worker_1-1 | Start first app
|
|||
|
worker_1-1 | Create dir
|
|||
|
worker_1-1 exited with code 0
|
|||
|
worker_2-1 | Start second app
|
|||
|
worker_2-1 | 0
|
|||
|
worker_2-1 exited with code 0
|
|||
|
```
|
|||
|
|
|||
|
## Запись тестирования
|
|||
|
Работа приложения представлена в [видео](https://disk.yandex.ru/i/0KAySyP5eaBg0g)
|