DAS_2024_1/kurushina_ksenia_lab_2/README.md
2024-12-08 20:55:28 +04:00

75 lines
4.7 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. Настроить 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`:
```bash
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