distributed-computing/labs/lab_2/README.md

73 lines
4.9 KiB
Markdown
Raw Normal View History

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