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
|