DAS_2024_1/kurushina_ksenia_lab_2
2024-12-08 20:55:28 +04:00
..
generate kurushina_ksenia_lab_2 2024-12-08 20:55:28 +04:00
work_one kurushina_ksenia_lab_2 2024-12-08 20:55:28 +04:00
work_two kurushina_ksenia_lab_2 2024-12-08 20:55:28 +04:00
docker-compose.yml kurushina_ksenia_lab_2 2024-12-08 20:55:28 +04:00
README.md kurushina_ksenia_lab_2 2024-12-08 20:55:28 +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. work_one:

    • Анализирует содержимое каталога /var/data, определяя файл с наибольшим количеством строк.
    • Копирует содержимое найденного файла в /var/result/data.txt.
  2. work_two:

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

Требования к реализации:

  • Docker: Используется для контейнеризации приложений.
  • Docker Compose: Позволяет запускать несколько контейнеров через единый файл docker-compose.yml.

Сборка и запуск приложения:

Для сборки и запуска контейнеров выполните команду в директории с docker-compose.yml:

docker-compose up --build

Эта команда:

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

Результаты работы:

После завершения работы контейнеров:

  • Файл data.txt в папке /var/result будет содержать данные из файла с максимальным количеством строк из папки /var/data.
  • Файл result.txt в той же папке сохранит третью степень минимального числа из файла data.txt.

Детали реализации

Программы:

  1. work_one/main.py:

    • Осуществляет поиск файла с наибольшим количеством строк.
    • Сохраняет его содержимое в /var/result/data.txt.
  2. work_two/main.py:

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

Генерация тестовых данных:

Скрипт generate.py используется для создания случайных данных:

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

Dockerfile:

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

Итог

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

Видео

https://cloud.mail.ru/public/H89o/DGmReqSk9