.. | ||
app_one | ||
app_two | ||
data_generator | ||
.gitignore | ||
docker-compose.yml | ||
lab_2.1.png | ||
lab_2.2.png | ||
README.md |
Лабораторная работа №2 - Разработка простейшего распределённого приложения
Задание
- Разработать два приложения:
- app_one: Ищет в каталоге /var/data файл с наибольшим количеством строк и копирует его содержимое в /var/result/data.txt.
- app_two: Ищет наименьшее число из файла /var/result/data.txt и сохраняет количество таких чисел из последовательности в /var/result/result.txt.
- Разработать файлы сборки Docker для каждого приложения.
- Собрать файл docker-compose.yml для запуска обоих приложений.
- Настроить монтирование директорий для обмена данными между контейнерами.
- Правильно закоммитить решение с использованием .gitignore для исключения лишних файлов.
Сборка и запуск:
В директории, где находится файл docker-compose.yml, выполним команду для сборки и запуска всех контейнеров:
docker-compose up --build
Эта команда:
- Собирает все Docker-образы для сервисов.
- Запускает контейнеры.
- Автоматически подготавливает данные и выполняет приложения последовательно.
Результаты:
После успешного завершения работы контейнеров можно проверить результаты в папке result:
- data.txt — файл, полученный после выполнения первого приложения (содержит копию файла с наибольшим количеством строк из папки data).
- result.txt — файл, полученный после выполнения второго приложения (содержит количество наименьших чисел из файла data.txt).
Описание работы
Программы:
-
app_one/main.py:
- Ищет файл с наибольшим количеством строк в каталоге /var/data.
- Копирует содержимое этого файла в /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 для запуска двух программ, обрабатывающих данные в контейнерах.