revert Revert "Merge branch 'main' of https://git.is.ulstu.ru/Alexey/DAS_2025_1"

This reverts commit 4fe8cf6f2a, reversing
changes made to ca742800b1.
This commit is contained in:
2025-09-24 23:04:14 +04:00
parent 27005d8034
commit 31f0155aec
2 changed files with 77 additions and 0 deletions

View File

@@ -14,6 +14,7 @@
| № | л/р |
|---|-----|
| 1 | [Знакомство с docker и docker-compose](https://git.is.ulstu.ru/Alexey/DAS_2025_1/src/branch/main/lab_1.md) |
| 2 | [Разработка простейшего распределённого приложения](https://git.is.ulstu.ru/Alexey/DAS_2025_1/src/branch/main/lab_2.md) |
**Воркфлоу по сдаче лабораторных работ**

76
lab_2.md Normal file
View File

@@ -0,0 +1,76 @@
# Лабораторная работа №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:
0. Ищет в каталоге `/var/data` самый большой по объёму файл и перекладывает его в `/var/result/data.txt`.
1. Ищет в каталоге `/var/data` файл с наибольшим количеством строк и перекладывает его в `/var/result/data.txt`.
2. Формирует файл `/var/result/data.txt` из первых строк всех файлов каталога `/var/data`.
3. Формирует файл `/var/result/data.txt` так, что каждая строка файла - количество строк в файлах из каталога `/var/data`.
4. Формирует файл `/var/result/data.txt` так, что каждая строка файла - количество символов в именах файлов из каталога `/var/data`.
5. Ищет в каталоге `/var/data` файл с самым коротким названием и перекладывает его в `/var/result/data.txt`.
6. Берёт из каталога `/var/data` случайный файл и перекладывает его в `/var/result/data.txt`.
### Варианты программы 2:
0. Сохраняет произведение первого и последнего числа из файла `/var/data/data.txt` в `/var/result/result.txt`.
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`.