4.9 KiB
Лабораторная работа №2 - Разработка простейшего распределённого приложения
Цель: изучение техники создания простого распределённого приложения.
Задачи:
- Согласно вашему варианту разработать два приложения такие, что результат первого является исходными данными для второго.
- Изучить файлы сборки образов docker и разработать их для созданных приложений.
- Собрать файл
docker-compose.yml
для запуска приложений. Разобраться с монтированием каталогов из хост-системы. - Правильно закоммитить результат без лишних файлов.
- Оформить pull request по правилам и отправить его на проверку.
Разработка двух приложений
Варианты: TBD. Как получить вариант: TBD. Пример приложения 1: взять все файлы из заранее заданного каталога и положить содержимое всех файлов в один файл. Пример приложения 2: взять содержимое файла из программы 1, посчитать сумму всех чисел и положить её в другой файл. Вот тут есть пример отчёта.
Язык разработки приложений — любой.
Автор советует использовать dotnet, java, go или python.
Каждая программа должна лежать в отдельной подпапке в репозитории, например: tasks/moiseev-vv/lab_2/worker-1
и tasks/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
для каждого сервиса. - Была работа с монтированием папок.
- Были описаны зависимости одного сервиса от другого.
Коммит результата
Перед началом работы над задачей необходимо актуализировать свой форк, выполненный в работе №1.
Как это сделать зависит от конкретного хранилища git-репозиториев.
TODO: Так как всё-таки?!
Также необходимо не забыть добавить файл .gitignore
в каталог с вашей работой.
Если вы этого не сделаете, на коммит "полезут" файлы сборки и прочие вещи, который быть в публичном репозитории не должны.
Для
dotnet
файл.gitignore
создаётся при помощи командыdotnet new gitignore
.
Правила оформления pull request
Название pull request: [Л/Р 2] ФАМИЛИЯ ИМЯ
, например, [Л/Р 2] Моисеев Владислав
.