7.9 KiB
Лабораторная работа №2 - Разработка простейшего распределённого приложения
Цель: изучение техники создания простого распределённого приложения.
Задачи:
- Согласно вашему варианту (выбирайте любой) разработать два приложения такие, что результат первого является исходными данными для второго.
- Изучить файлы сборки образов docker и разработать их для созданных приложений.
- Собрать файл
docker-compose.yml
для запуска приложений. Разобраться с монтированием каталогов из хост-системы. - Правильно закоммитить результат без лишних файлов.
- Оформить pull request по правилам и отправить его на проверку.
Разработка двух приложений
Необходимо разработать 2 приложения согласно варианту. Описание поиска своего варианта расположено ниже.
Общее для всех вариантов:
- Язык разработки приложений — любой.
- Содержимое исходных файлов - целые числа.
- Результат выполнения программы 2 необходимо дополнительно вывести на экран.
Автор советует использовать dotnet, java, go или python.
Каждая программа должна лежать в отдельной подпапке в репозитории, например: moiseev-vv-lab_2/worker-1
и moiseev-vv-lab_2/worker-2
.
Добавление файлов сборки Dockerfile
В каталоге с каждым приложением необходимо создать файл Dockerfile
, где будут расположены инструкции по сборке образа с вашими приложениями.
Для многих языков программирования шаблоны
Dockerfile
можно найти в Интернете.
В рамках задания необходимо расписать, за что отвечает каждая значимая строка в Dockerfile
.
Хотя бы одном.
Если у вас используется multi-stage build (как в примере выше, где в одном Dockerfile
несколько конструкций FROM
), необходимо расписать, зачем.
Формирование файла docker-compose.yml
Необходимо в каталоге с вашей работой создать файл docker-compose.yml
, чтобы можно было собрать и запустить программы следующей командой:
distributed-computing\tasks\moiseev-vv\lab_2$ docker compose up --build
До
$
- каталог относительно корня репозитория, чтобы понять, откуда запускаетсяdocker compose
.
Необходимо, чтобы в файле было:
- Два сервиса. Каждый соответствует вашим программам.
- Объявлена директива
build
для каждого сервиса. - Была работа с монтированием папок.
- Были описаны зависимости одного сервиса от другого.
Оформление отчёта
Правила именования папки с отчётом и исходными текстами на примере ivanov_ivan_lab_1
.
Коммит результата
Перед началом работы над задачей необходимо актуализировать свой форк, выполненный в работе №1.
Как это сделать зависит от конкретного хранилища git-репозиториев.
TODO: Так как всё-таки?!
Также необходимо не забыть добавить файл .gitignore
в каталог с вашей работой.
Если вы этого не сделаете, на коммит "полезут" файлы сборки и прочие вещи, который быть в публичном репозитории не должны.
Для
dotnet
файл.gitignore
создаётся при помощи командыdotnet new gitignore
.
Правила именования ветки: фамилия_инициалы_lab_номер
, например, moiseev_vv_lab_2
.
Все файлы, которые вы использовали в первой лабораторной работе и которые вам понадобятся во второй пожалуйста продублируйте в папку второй лабораторной работы, а после сделайте новую ветку для второй л/р также от master:
> git checkout master
> git checkout -b moiseev-vv-lab-2
> mkdir moiseev-vv-lab-2
> cd moisev-vv-lab-2 <--- вот сюда скопировать, и эту же папку коммитить, чтобы не нарушать ранее выполненную л/р
Правила оформления pull request
См. тут.
Варианты
Варианты программы 1:
- Ищет в каталоге
/var/data
самый большой по объёму файл и перекладывает его в/var/result/data.txt
. - Ищет в каталоге
/var/data
файл с наибольшим количеством строк и перекладывает его в/var/result/data.txt
. - Формирует файл
/var/result/data.txt
из первых строк всех файлов каталога/var/data
. - Формирует файл
/var/result/data.txt
так, что каждая строка файла - количество строк в файлах из каталога/var/data
. - Формирует файл
/var/result/data.txt
так, что каждая строка файла - количество символов в именах файлов из каталога/var/data
. - Ищет в каталоге
/var/data
файл с самым коротким названием и перекладывает его в/var/result/data.txt
. - Берёт из каталога
/var/data
случайный файл и перекладывает его в/var/result/data.txt
.
Варианты программы 2:
- Сохраняет произведение первого и последнего числа из файла
/var/data/data.txt
в/var/result/result.txt
. - Ищет набольшее число из файла
/var/data/data.txt
и сохраняет его вторую степень в/var/result/result.txt
. - Ищет наименьшее число из файла
/var/data/data.txt
и сохраняет его третью степень в/var/result/result.txt
. - Ищет набольшее число из файла
/var/data/data.txt
и сохраняет количество таких чисел из последовательности в/var/result/result.txt
. - Ищет наименьшее число из файла
/var/data/data.txt
и сохраняет количество таких чисел из последовательности в/var/result/result.txt
.