DAS_2024_1/nikolaeva_yana_lab_2/README.md

77 lines
4.5 KiB
Markdown
Raw Normal View History

2024-12-10 19:37:07 +04:00
# Лабораторная работа №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