4.7 KiB
4.7 KiB
Лабораторная работа №2 - Разработка простого распределённого приложения
Описание задания
Цель: Создать два приложения, где результаты работы первого используются в качестве входных данных для второго.
Основные задачи:
- Разработать два приложения:
- app_one: Находит файл с максимальным количеством строк в папке
/var/data
и копирует его содержимое в/var/result/data.txt
. - app_two: Определяет минимальное число в файле
/var/result/data.txt
и записывает его третью степень в/var/result/result.txt
.
- app_one: Находит файл с максимальным количеством строк в папке
- Настроить Docker-образ для каждого приложения.
- Подготовить
docker-compose.yml
для управления обоими приложениями. - Организовать монтирование директорий для обмена данными между контейнерами.
- Настроить
.gitignore
для исключения ненужных файлов при коммитах.
Детали задания
Описание приложений
-
work_one:
- Анализирует содержимое каталога
/var/data
, определяя файл с наибольшим количеством строк. - Копирует содержимое найденного файла в
/var/result/data.txt
.
- Анализирует содержимое каталога
-
work_two:
- Читает содержимое файла
/var/result/data.txt
. - Находит минимальное число в файле и возводит его в третью степень.
- Сохраняет результат в
/var/result/result.txt
.
- Читает содержимое файла
Требования к реализации:
- Docker: Используется для контейнеризации приложений.
- Docker Compose: Позволяет запускать несколько контейнеров через единый файл
docker-compose.yml
.
Сборка и запуск приложения:
Для сборки и запуска контейнеров выполните команду в директории с docker-compose.yml
:
docker-compose up --build
Эта команда:
- Создает Docker-образы для всех сервисов.
- Запускает контейнеры.
- Выполняет обработку данных приложениями последовательно.
Результаты работы:
После завершения работы контейнеров:
- Файл data.txt в папке
/var/result
будет содержать данные из файла с максимальным количеством строк из папки/var/data
. - Файл result.txt в той же папке сохранит третью степень минимального числа из файла data.txt.
Детали реализации
Программы:
-
work_one/main.py:
- Осуществляет поиск файла с наибольшим количеством строк.
- Сохраняет его содержимое в
/var/result/data.txt
.
-
work_two/main.py:
- Читает содержимое файла
/var/result/data.txt
. - Находит минимальное число, возводит его в третью степень и сохраняет результат в
/var/result/result.txt
.
- Читает содержимое файла
Генерация тестовых данных:
Скрипт generate.py используется для создания случайных данных:
- Создает несколько файлов с целыми числами в папке
/var/data
. - Каждый файл содержит случайные данные, которые обрабатываются первым приложением.
Dockerfile:
Для каждого приложения разработан отдельный Dockerfile
, где описаны шаги по сборке образов и запуску соответствующих программ.
Итог
В ходе работы было создано распределённое приложение, использующее Docker и Docker Compose для последовательной обработки данных в двух контейнерах.