DAS_2024_1/nikolaeva_yana_lab_2/README.md
2024-12-10 19:37:07 +04:00

4.5 KiB
Raw Blame History

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

Цель работы

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

Поставленные задачи

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

Эта команда:

  • Соберёт образы всех сервисов.
  • Запустит контейнеры.
  • Автоматически выполнит последовательную обработку данных.

Итоговые результаты

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

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

Описание реализации

Скрипты

  1. app_one/main.py:

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

    • Анализирует файл /var/result/data.txt, определяет минимальное число, возводит его в третью степень и записывает в /var/result/result.txt.
  3. generate_data.py (скрипт для генерации данных):

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

Dockerfile

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

Заключение

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

Ссылка на видео

https://cloud.mail.ru/public/qbRv/m3AAUZ2VT