DAS_2024_1/morozov_vladimir_lab_2/readme.md

3.6 KiB
Raw Blame History

Лабораторная работа №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
  4. Запустить команду:
docker-compose up --build

После этого будут созданые контейнеры, которые построены на основе образов, указанных в docker-compose.yml. В терминале будут отабражено следующее:

 ✔ 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

Запись тестирования

Работа приложения представлена в видео