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

77 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Лабораторная работа №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`:
```bash
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