79 lines
4.9 KiB
Markdown
79 lines
4.9 KiB
Markdown
|
# Лабораторная работа №2 - Разработка простейшего распределённого приложения
|
|||
|
|
|||
|
## Задание
|
|||
|
|
|||
|
Цель: Разработать два приложения, результат работы первого из которых становится входными данными для второго.
|
|||
|
|
|||
|
Задачи:
|
|||
|
1. Разработать два приложения:
|
|||
|
- search max lines: Ищет в каталоге /var/data файл с наибольшим количеством строк и копирует его содержимое в /var/result/data.txt.
|
|||
|
- search max number: Ищет набольшее число из файла /var/data/data.txt и сохраняет его вторую степень в /var/result/result.txt/
|
|||
|
2. Разработать файлы сборки Docker для каждого приложения.
|
|||
|
3. Собрать файл docker-compose.yml для запуска обоих приложений.
|
|||
|
4. Настроить монтирование директорий для обмена данными между контейнерами.
|
|||
|
5. Правильно закоммитить решение с использованием .gitignore для исключения лишних файлов.
|
|||
|
|
|||
|
## Варианты задания:
|
|||
|
|
|||
|
1. search max lines:
|
|||
|
- Ищет файл с наибольшим количеством строк в каталоге /var/data.
|
|||
|
- Копирует содержимое этого файла в /var/result/data.txt.
|
|||
|
|
|||
|
2. search max number:
|
|||
|
- Читает файл /var/result/data.txt.
|
|||
|
- Ищет набольшее число и сохраняет его вторую степень в /var/result/result.txt.
|
|||
|
|
|||
|
### Требования:
|
|||
|
1. Docker: Платформа для контейнеризации приложений.
|
|||
|
2. Docker Compose: Инструмент для управления многоконтейнерными приложениями на основе файла docker-compose.yml.
|
|||
|
|
|||
|
### Сборка и запуск:
|
|||
|
|
|||
|
В директории, где находится файл docker-compose.yml, выполним команду для сборки и запуска всех контейнеров:
|
|||
|
|
|||
|
|
|||
|
docker-compose up --build
|
|||
|
|
|||
|
|
|||
|
Эта команда:
|
|||
|
1. Собирает все Docker-образы для сервисов.
|
|||
|
2. Запускает контейнеры.
|
|||
|
3. Автоматически подготавливает данные и выполняет приложения последовательно.
|
|||
|
|
|||
|
### Результаты:
|
|||
|
|
|||
|
После успешного завершения работы контейнеров можно проверить результаты в папке result:
|
|||
|
- data.txt — файл, полученный после выполнения первого приложения (содержит копию файла с наибольшим количеством строк из папки data).
|
|||
|
- result.txt — файл, полученный после выполнения второго приложения (содержит вторую степень наибольшего числа из файла data.txt).
|
|||
|
|
|||
|
## Описание работы
|
|||
|
|
|||
|
### Программы:
|
|||
|
|
|||
|
1. search_max_lines/main.py:
|
|||
|
- Ищет файл с наибольшим количеством строк в каталоге /var/data.
|
|||
|
- Копирует содержимое этого файла в /var/result/data.txt.
|
|||
|
|
|||
|
2. search_max_number/main.py:
|
|||
|
- Читает файл /var/result/data.txt.
|
|||
|
- Ищет наибольшее число в файле и возводит его в вторую степень.
|
|||
|
- Сохраняет результат в файл /var/result/result.txt.
|
|||
|
|
|||
|
### Генерация данных:
|
|||
|
|
|||
|
Для создания случайных данных был написан скрипт generate_data.py:
|
|||
|
- Создает несколько файлов с целыми числами в каталоге /var/data.
|
|||
|
- Каждый файл содержит случайные числа, которые будут использоваться первым приложением.
|
|||
|
|
|||
|
### Dockerfile:
|
|||
|
|
|||
|
Каждое приложение имеет собственный Dockerfile, где указаны шаги для сборки Python-образов и запуска программ.
|
|||
|
|
|||
|
## Вывод
|
|||
|
|
|||
|
В результате лабораторной работы было создано простейшее распределенное приложение, которое использует Docker и Docker Compose для запуска двух программ, обрабатывающих данные в контейнерах.
|
|||
|
|
|||
|
## Видео ВК
|
|||
|
|
|||
|
[Ссылка на демонстрацию работы программы](https://vk.com/video547368103_456239600?list=ln-YscnzBfpyobmc7eiKl)
|