DAS_2024_1/kadyrov_aydar_lab_2/README.md
2024-10-24 20:07:47 +04:00

78 lines
4.8 KiB
Markdown
Raw Permalink 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. **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, выполним команду для сборки и запуска всех контейнеров:
docker-compose up --build
Эта команда:
1. Собирает все Docker-образы для сервисов.
2. Запускает контейнеры.
3. Автоматически подготавливает данные и выполняет приложения последовательно.
### Результаты:
После успешного завершения работы контейнеров можно проверить результаты в папке result:
- **data.txt** — файл, полученный после выполнения первого приложения (содержит копию файла с наибольшим количеством строк из папки data).
- **result.txt** — файл, полученный после выполнения второго приложения (содержит третью степень наименьшего числа из файла data.txt).
## Описание работы
### Программы:
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://vk.com/video64471408_456239205?list=ln-nzLhpgninZdZBOzarw