DAS_2024_1/kadyrov_aydar_lab_2
2024-10-24 20:07:47 +04:00
..
app_one kadyrov_aydar_lab_2 2024-10-24 20:07:47 +04:00
app_two kadyrov_aydar_lab_2 2024-10-24 20:07:47 +04:00
data_generator kadyrov_aydar_lab_2 2024-10-24 20:07:47 +04:00
.gitignore kadyrov_aydar_lab_2 2024-10-24 20:07:47 +04:00
docker-compose.yml kadyrov_aydar_lab_2 2024-10-24 20:07:47 +04:00
README.md kadyrov_aydar_lab_2 2024-10-24 20:07:47 +04:00

Лабораторная работа №2 - Разработка простейшего распределённого приложения

Задание

Цель: Разработать два приложения, результат работы первого из которых становится входными данными для второго.

Задачи:

  1. Разработать два приложения:
    • app_one: Ищет в каталоге /var/data файл с наибольшим количеством строк и копирует его содержимое в /var/result/data.txt.
    • app_two: Ищет наименьшее число из файла /var/result/data.txt и сохраняет его в третьей степени в /var/result/result.txt.
  2. Разработать файлы сборки Docker для каждого приложения.
  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, выполним команду для сборки и запуска всех контейнеров:

docker-compose up --build

Эта команда:

  1. Собирает все Docker-образы для сервисов.
  2. Запускает контейнеры.
  3. Автоматически подготавливает данные и выполняет приложения последовательно.

Результаты:

После успешного завершения работы контейнеров можно проверить результаты в папке result:

  • data.txt — файл, полученный после выполнения первого приложения (содержит копию файла с наибольшим количеством строк из папки data).
  • result.txt — файл, полученный после выполнения второго приложения (содержит третью степень наименьшего числа из файла data.txt).

Описание работы

Программы:

  1. app_one/main.py:

    • Ищет файл с наибольшим количеством строк в каталоге /var/data.
    • Копирует содержимое этого файла в /var/result/data.txt.
  2. app_two/main.py:

    • Читает файл /var/result/data.txt.
    • Ищет наименьшее число в файле и возводит его в третью степень.
    • Сохраняет результат в файл /var/result/result.txt.

Генерация данных:

Для создания случайных данных был написан скрипт generate_data.py:

  • Создает несколько файлов с целыми числами в каталоге /var/data.
  • Каждый файл содержит случайные числа, которые будут использоваться первым приложением.

Dockerfile:

Каждое приложение имеет собственный Dockerfile, где указаны шаги для сборки Python-образов и запуска программ.

Вывод

В результате лабораторной работы было создано простейшее распределенное приложение, которое использует Docker и Docker Compose для запуска двух программ, обрабатывающих данные в контейнерах.

Видео ВК

https://vk.com/video64471408_456239205?list=ln-nzLhpgninZdZBOzarw