.. | ||
app_one | ||
app_two | ||
data_generator | ||
docker-compose.yml | ||
README.md |
Лабораторная работа №2 — Создание простейшего распределённого приложения
Цель работы
Разработать два приложения, которые взаимодействуют следующим образом: результат работы первого приложения становится входными данными для второго.
Поставленные задачи
- Разработка приложений:
- app_one: Определяет файл с максимальным количеством строк в каталоге
/var/data
и копирует его содержимое в/var/result/data.txt
. - app_two: Анализирует файл
/var/result/data.txt
, находит наименьшее число и записывает его третью степень в/var/result/result.txt
.
- app_one: Определяет файл с максимальным количеством строк в каталоге
- Создать Dockerfile для каждого приложения.
- Настроить
docker-compose.yml
для совместного запуска приложений. - Реализовать монтирование директорий для передачи данных между контейнерами.
- Организовать репозиторий с использованием
.gitignore
для исключения ненужных файлов.
Детализация заданий
Приложения
-
app_one:
- Находит файл с наибольшим количеством строк в каталоге
/var/data
. - Копирует содержимое этого файла в
/var/result/data.txt
.
- Находит файл с наибольшим количеством строк в каталоге
-
app_two:
- Читает файл
/var/result/data.txt
. - Определяет наименьшее число в файле, возводит его в третью степень и сохраняет результат в
/var/result/result.txt
.
- Читает файл
Инструменты и требования
- Docker: Для контейнеризации приложений.
- Docker Compose: Для управления многоконтейнерным приложением через файл
docker-compose.yml
.
Процесс сборки и запуска
Для запуска приложений выполните следующую команду в директории с файлом docker-compose.yml
:
docker-compose up --build
Эта команда:
- Соберёт образы всех сервисов.
- Запустит контейнеры.
- Автоматически выполнит последовательную обработку данных.
Итоговые результаты
После завершения работы приложений результат можно найти в каталоге /var/result
:
- data.txt — копия файла с максимальным количеством строк из каталога
/var/data
. - result.txt — результат возведения наименьшего числа из
data.txt
в третью степень.
Описание реализации
Скрипты
-
app_one/main.py:
- Находит файл с максимальным количеством строк.
- Копирует его содержимое в
/var/result/data.txt
.
-
app_two/main.py:
- Анализирует файл
/var/result/data.txt
, определяет минимальное число, возводит его в третью степень и записывает в/var/result/result.txt
.
- Анализирует файл
-
generate_data.py (скрипт для генерации данных):
- Создаёт несколько файлов с случайными числами в каталоге
/var/data
для тестирования.
- Создаёт несколько файлов с случайными числами в каталоге
Dockerfile
Каждое приложение имеет собственный Dockerfile с инструкциями по сборке образов на основе Python.
Заключение
Реализовано распределённое приложение, использующее Docker для запуска контейнеров и Docker Compose для оркестрации. Решение обеспечивает автоматизированную обработку данных через два взаимосвязанных приложения.