# Лабораторная работа №2 — Создание простейшего распределённого приложения ## Цель работы Разработать два приложения, которые взаимодействуют следующим образом: результат работы первого приложения становится входными данными для второго. ## Поставленные задачи 1. **Разработка приложений**: - **app_one**: Определяет файл с максимальным количеством строк в каталоге `/var/data` и копирует его содержимое в `/var/result/data.txt`. - **app_two**: Анализирует файл `/var/result/data.txt`, находит наименьшее число и записывает его третью степень в `/var/result/result.txt`. 2. Создать Dockerfile для каждого приложения. 3. Настроить `docker-compose.yml` для совместного запуска приложений. 4. Реализовать монтирование директорий для передачи данных между контейнерами. 5. Организовать репозиторий с использованием `.gitignore` для исключения ненужных файлов. ## Детализация заданий ### Приложения 1. **app_one**: - Находит файл с наибольшим количеством строк в каталоге `/var/data`. - Копирует содержимое этого файла в `/var/result/data.txt`. 2. **app_two**: - Читает файл `/var/result/data.txt`. - Определяет наименьшее число в файле, возводит его в третью степень и сохраняет результат в `/var/result/result.txt`. ### Инструменты и требования 1. **Docker**: Для контейнеризации приложений. 2. **Docker Compose**: Для управления многоконтейнерным приложением через файл `docker-compose.yml`. ## Процесс сборки и запуска Для запуска приложений выполните следующую команду в директории с файлом `docker-compose.yml`: ```bash docker-compose up --build ``` Эта команда: - Соберёт образы всех сервисов. - Запустит контейнеры. - Автоматически выполнит последовательную обработку данных. ## Итоговые результаты После завершения работы приложений результат можно найти в каталоге `/var/result`: - **data.txt** — копия файла с максимальным количеством строк из каталога `/var/data`. - **result.txt** — результат возведения наименьшего числа из `data.txt` в третью степень. ## Описание реализации ### Скрипты 1. **app_one/main.py**: - Находит файл с максимальным количеством строк. - Копирует его содержимое в `/var/result/data.txt`. 2. **app_two/main.py**: - Анализирует файл `/var/result/data.txt`, определяет минимальное число, возводит его в третью степень и записывает в `/var/result/result.txt`. 3. **generate_data.py** (скрипт для генерации данных): - Создаёт несколько файлов с случайными числами в каталоге `/var/data` для тестирования. ### Dockerfile Каждое приложение имеет собственный Dockerfile с инструкциями по сборке образов на основе Python. ## Заключение Реализовано распределённое приложение, использующее Docker для запуска контейнеров и Docker Compose для оркестрации. Решение обеспечивает автоматизированную обработку данных через два взаимосвязанных приложения. ## Ссылка на видео https://cloud.mail.ru/public/qbRv/m3AAUZ2VT