# Лабораторная работа №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)