63 lines
3.9 KiB
Markdown
63 lines
3.9 KiB
Markdown
# Лабораторная работа №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 для исключения лишних файлов.
|
||
|
||
## Сборка и запуск:
|
||
|
||
В директории, где находится файл docker-compose.yml, выполним команду для сборки и запуска всех контейнеров:
|
||
|
||
|
||
docker-compose up --build
|
||
|
||
|
||
Эта команда:
|
||
1. Собирает все Docker-образы для сервисов.
|
||
2. Запускает контейнеры.
|
||
3. Автоматически подготавливает данные и выполняет приложения последовательно.
|
||
|
||
### Результаты:
|
||
|
||
После успешного завершения работы контейнеров можно проверить результаты в папке result:
|
||
- **data.txt** — файл, полученный после выполнения первого приложения (содержит копию файла с наибольшим количеством строк из папки data).
|
||
![](lab_2.1.png "")
|
||
- **result.txt** — файл, полученный после выполнения второго приложения (содержит количество наименьших чисел из файла data.txt).
|
||
![](lab_2.2.png "")
|
||
|
||
## Описание работы
|
||
|
||
### Программы:
|
||
|
||
1. **app_one/main.py**:
|
||
- Ищет файл с наибольшим количеством строк в каталоге /var/data.
|
||
- Копирует содержимое этого файла в /var/result/data.txt.
|
||
|
||
2. **app_two/main.py**:
|
||
- Читает файл /var/result/data.txt.
|
||
- Ищет наименьшее число в файле и возводит его в третью степень.
|
||
- Сохраняет результат в файл /var/result/result.txt.
|
||
|
||
### Генерация данных:
|
||
|
||
Для создания случайных данных был написан скрипт generate_data.py:
|
||
- Создает несколько файлов с целыми числами в каталоге /var/data.
|
||
- Каждый файл содержит случайные числа, которые будут использоваться первым приложением.
|
||
|
||
### Dockerfile:
|
||
|
||
Каждое приложение имеет собственный Dockerfile, где указаны шаги для сборки Python-образов и запуска программ.
|
||
|
||
## Вывод
|
||
|
||
В результате лабораторной работы было создано простейшее распределенное приложение, которое использует Docker и Docker Compose для запуска двух программ, обрабатывающих данные в контейнерах.
|
||
|
||
## Видео
|
||
https://disk.yandex.ru/i/V7k_SepqnxID5Q
|