# Лабораторная работа №2 - Разработка простейшего распределённого приложения ## Задание Цель: Разработать два приложения, результат работы первого из которых становится входными данными для второго. Задачи: 1. Разработать два приложения: - search max lines: Ищет в каталоге /var/data файл с наибольшим количеством строк и копирует его содержимое в /var/result/data.txt. - search max number: Ищет набольшее число из файла /var/data/data.txt и сохраняет его вторую степень в /var/result/result.txt/ 2. Разработать файлы сборки Docker для каждого приложения. 3. Собрать файл docker-compose.yml для запуска обоих приложений. 4. Настроить монтирование директорий для обмена данными между контейнерами. 5. Правильно закоммитить решение с использованием .gitignore для исключения лишних файлов. ## Варианты задания: 1. search max lines: - Ищет файл с наибольшим количеством строк в каталоге /var/data. - Копирует содержимое этого файла в /var/result/data.txt. 2. search max number: - Читает файл /var/result/data.txt. - Ищет набольшее число и сохраняет его вторую степень в /var/result/result.txt. ### Требования: 1. Docker: Платформа для контейнеризации приложений. 2. Docker Compose: Инструмент для управления многоконтейнерными приложениями на основе файла docker-compose.yml. ### Сборка и запуск: В директории, где находится файл docker-compose.yml, выполним команду для сборки и запуска всех контейнеров: docker-compose up --build Эта команда: 1. Собирает все Docker-образы для сервисов. 2. Запускает контейнеры. 3. Автоматически подготавливает данные и выполняет приложения последовательно. ### Результаты: После успешного завершения работы контейнеров можно проверить результаты в папке result: - data.txt — файл, полученный после выполнения первого приложения (содержит копию файла с наибольшим количеством строк из папки data). - result.txt — файл, полученный после выполнения второго приложения (содержит вторую степень наибольшего числа из файла data.txt). ## Описание работы ### Программы: 1. search_max_lines/main.py: - Ищет файл с наибольшим количеством строк в каталоге /var/data. - Копирует содержимое этого файла в /var/result/data.txt. 2. search_max_number/main.py: - Читает файл /var/result/data.txt. - Ищет наибольшее число в файле и возводит его в вторую степень. - Сохраняет результат в файл /var/result/result.txt. ### Генерация данных: Для создания случайных данных был написан скрипт generate_data.py: - Создает несколько файлов с целыми числами в каталоге /var/data. - Каждый файл содержит случайные числа, которые будут использоваться первым приложением. ### Dockerfile: Каждое приложение имеет собственный Dockerfile, где указаны шаги для сборки Python-образов и запуска программ. ## Вывод В результате лабораторной работы было создано простейшее распределенное приложение, которое использует Docker и Docker Compose для запуска двух программ, обрабатывающих данные в контейнерах. ## Видео ВК [Ссылка на демонстрацию работы программы](https://vk.com/video547368103_456239600?list=ln-YscnzBfpyobmc7eiKl)