77 lines
4.5 KiB
Markdown
77 lines
4.5 KiB
Markdown
# Лабораторная работа №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 |