DAS_2024_1/morozov_vladimir_lab_2/readme.md

45 lines
3.6 KiB
Markdown
Raw Normal View History

2024-11-05 20:48:50 +04:00
# Лабораторная работа №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)