Files
DAS_2025_1/lab_2.md
Vyacheslav 31f0155aec revert 27005d8034
revert Revert "Merge branch 'main' of https://git.is.ulstu.ru/Alexey/DAS_2025_1"

This reverts commit 4fe8cf6f2a, reversing
changes made to ca742800b1.
2025-09-24 23:04:14 +04:00

5.9 KiB
Raw Blame History

Лабораторная работа №2 - Разработка простейшего распределённого приложения

Цель: изучение техники создания простого распределённого приложения.

Задачи:

  1. Согласно вашему варианту (выбирайте любой) разработать два приложения такие, что результат первого является исходными данными для второго.
  2. Изучить файлы сборки образов docker и разработать их для созданных приложений.
  3. Собрать файл docker-compose.yml для запуска приложений. Разобраться с монтированием каталогов из хост-системы.
  4. Правильно закоммитить результат без лишних файлов.
  5. Оформить pull request по правилам и отправить его на проверку.

Разработка двух приложений

Необходимо разработать 2 приложения согласно варианту. Описание поиска своего варианта расположено ниже.

Общее для всех вариантов:

  • Язык разработки приложений — любой.
  • Содержимое исходных файлов - целые числа.
  • Результат выполнения программы 2 необходимо дополнительно вывести на экран.

Автор советует использовать dotnet, java, go или python.

Каждая программа должна лежать в отдельной подпапке в репозитории, например: moiseev-vv-lab_2/worker-1 и moiseev-vv-lab_2/worker-2.

Добавление файлов сборки Dockerfile

В каталоге с каждым приложением необходимо создать файл Dockerfile, где будут расположены инструкции по сборке образа с вашими приложениями.

Для многих языков программирования шаблоны Dockerfile можно найти в Интернете.

В рамках задания необходимо расписать, за что отвечает каждая значимая строка в Dockerfile. Хотя бы одном.

Если у вас используется multi-stage build (как в примере выше, где в одном Dockerfile несколько конструкций FROM), необходимо расписать, зачем.

Формирование файла docker-compose.yml

Необходимо в каталоге с вашей работой создать файл docker-compose.yml, чтобы можно было собрать и запустить программы следующей командой:

distributed-computing\tasks\moiseev-vv\lab_2$ docker compose up --build

До $ - каталог относительно корня репозитория, чтобы понять, откуда запускается docker compose.

Необходимо, чтобы в файле было:

  1. Два сервиса. Каждый соответствует вашим программам.
  2. Объявлена директива build для каждого сервиса.
  3. Была работа с монтированием папок.
  4. Были описаны зависимости одного сервиса от другого.

Варианты

Варианты программы 1:

  1. Ищет в каталоге /var/data самый большой по объёму файл и перекладывает его в /var/result/data.txt.
  2. Ищет в каталоге /var/data файл с наибольшим количеством строк и перекладывает его в /var/result/data.txt.
  3. Формирует файл /var/result/data.txt из первых строк всех файлов каталога /var/data.
  4. Формирует файл /var/result/data.txt так, что каждая строка файла - количество строк в файлах из каталога /var/data.
  5. Формирует файл /var/result/data.txt так, что каждая строка файла - количество символов в именах файлов из каталога /var/data.
  6. Ищет в каталоге /var/data файл с самым коротким названием и перекладывает его в /var/result/data.txt.
  7. Берёт из каталога /var/data случайный файл и перекладывает его в /var/result/data.txt.

Варианты программы 2:

  1. Сохраняет произведение первого и последнего числа из файла /var/data/data.txt в /var/result/result.txt.
  2. Ищет набольшее число из файла /var/data/data.txt и сохраняет его вторую степень в /var/result/result.txt.
  3. Ищет наименьшее число из файла /var/data/data.txt и сохраняет его третью степень в /var/result/result.txt.
  4. Ищет набольшее число из файла /var/data/data.txt и сохраняет количество таких чисел из последовательности в /var/result/result.txt.
  5. Ищет наименьшее число из файла /var/data/data.txt и сохраняет количество таких чисел из последовательности в /var/result/result.txt.