.. | ||
app_1 | ||
app_2 | ||
generator | ||
docker-compose.yml | ||
README.md |
Лабораторная работа №2 - Разработка простейшего распределённого приложения
Задание
- Разработать два приложения такие, что результат первого является исходными данными для второго.
- Изучить файлы сборки образов
docker
и разработать их для созданных приложений и правильно закоммитить решение - Собрать файл
docker-compose.yml
для запуска приложений.
Варианты задания:
1. Первое приложение берёт из каталога /var/data случайный файл и перекладывает его в /var/result/data.txt
2. Второе приложение сохраняет произведение первого и последнего числа из файла /var/result/data.txt в /var/result/result.txt
Запуск работы программы
- Убедиться, что установлены необходимые технологии:
- Docker: Платформа для контейнеризации приложений.
- Docker Compose: Инструмент для запуска много контейнерных приложений на основе
docker-compose.yaml
. Обычно поставляется вместе с Docker. Чтобы проверить, установлена ли утилита, нужно запустить команду:
docker-compose --version
- В директории, где находится файл
docker-compose.yaml
, выполнить следующую команду для запуска всех сервисов:
docker-compose up --build
Эта команда сначала выполнит сборку, а затем запустит контейнеры.
- После успешного запуска можно перейти в каталог проекта и увидеть папку data со сгенерированными файлами и папку result, в которой два текстовых файла:
- data.txt - файл, полученный после выполнения первой программы.
- result.txt -файл, полученный после выполнения второй программы.
Описание работы:
- Генератор файлов generate_files.py, генерирует случайные файлы с числами и сохраняет их в папке data.
- Первое приложение app.py, случайным образом получает один файл из папки data и копирует его содержимое в result/data.txt.
- Второе приложение app.py, находит произведение первого и последнего чисел из result/data.txt и записывает в result/result.txt.
- Файла docker-compose.yml docker-compose.yml построчно описан в комментариях в коде.
Файл Docker построчно описан в коде на примере Docker первого сервиса app_1.