From 5668db95c3b3f7261b0454d6e8fde1fad1f1bb2b Mon Sep 17 00:00:00 2001 From: AminaZakirova Date: Sun, 3 Dec 2023 21:34:39 +0400 Subject: [PATCH] zakirova-ar-lab-2 --- tasks/zakirova-ar/lab_2/README.md | 74 +++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 tasks/zakirova-ar/lab_2/README.md diff --git a/tasks/zakirova-ar/lab_2/README.md b/tasks/zakirova-ar/lab_2/README.md new file mode 100644 index 0000000..9924c0f --- /dev/null +++ b/tasks/zakirova-ar/lab_2/README.md @@ -0,0 +1,74 @@ +# Отчёт по лабораторной работе №2 + +Выполнил: студентка гр. ИСЭбд-41 Закирова Амина. + +Вариант программы 1: Формирует файл `/var/result/data.txt` так, что каждая строка файла - количество символов в именах файлов из каталога `/var/data`. + +Вариант программы 2: Ищет наименьшее число из файла `/var/data/data.txt` и сохраняет его третью степень в `/var/result/result`.txt. + +## Создание приложений + +Создадим 2 приложения. +Был выбран язык C# и технология .NET 6, потому что хочется. + +Для создания обычных консольных приложений воспользуемся командами: + +```sh +dotnet new console -o worker-1 +dotnet new console -o worker-2 +``` + +Согласно варианту программа 1 должна брать все файлы из папки `/var/data`, считывать оттуда количество строк в названии файлов и помещает числа в файл `/var/result/data.txt`. + +[Исходный текст программы worker-1](worker-1/Program.cs) + +Согласно варианту программа 2 должна числа из файла `/var/data/data.txt`, найти наименьшее число и возвести в тертью степень. +Затем результат вычислений помещается в файл `/var/result/result.txt`. + +[Исходный текст программы worker-2](worker-2/Program.cs) + +Дополнительно создан файл [.gitignore](.gitignore) для того, чтобы не закоммитить в git ничего лишнего. + +## Настройка окружения + +Для связи двух приложений воспользуемся следующей схемой: + +1. Каталог `./data` должен быть примонтирован в каталог `/var/data` для программы 1. + Оттуда будут браться исходные данные. +2. Каталог `./result-1` должен быть примонтирован в каталог `/var/result` для программы 2. + Туда будут складываться промежуточные данные. +3. Каталог `./result-1` также должен быть примонтирован в каталог `/var/data` для программы 2. + Оттуда будут браться промежуточные результаты. +4. Каталог `./result` должен быть примонтирован в каталог `/var/result` для программы 2. + Туда будут складывать результаты финальной обработки. + +Для каждой программы были созданы файлы Dockerfile ([программа 1](worker-1/Dockerfile), [программа 2](worker-1/Dockerfile)) с подробным описанием процесса сборки. + +Был создан файл [docker-compose.yml](docker-compose.yml), в котором указан манифест для запуска распределённого приложения. + +Дополнительно был создан файл [.dockerignore](.dockerignore) и дополнен [.gitignore](.gitignore), чтобы исключить для сборки и коммита всё лишнее. + +## Сборка и запуск + +В каталог `./data` помещены 3 файла. +Название файлов состит из 3, 5, 7 символов + +Для запуска приложения необходимо ввести команду `docker compose up ---build`. + +Результат запуска после сборки: + +``` +[+] Running 2/0 + - Container lab_2-worker-1-1 Created + - Container lab_2-worker-2-1 Created +Attaching to lab_2-worker-1-1, lab_2-worker-2-1 +lab_2-worker-1-1 | Начало обработки файла /var/data/another data.txt +lab_2-worker-1-1 | Начало обработки файла /var/data/data.txt +lab_2-worker-1-1 exited with code 0 +lab_2-worker-2-1 | Успешно! Результат: 3 5 7 +lab_2-worker-2-1 exited with code 0 +``` + +В результате в каталоге `./result` создался файл `result.txt` с содержимым `27`, так как минимальным числом в исходном файле было `3`. + +Изменение значений в файлах из каталога `./data` также изменяет содержимое в файлах из каталогов `./result-1` и `./result`.