54 lines
4.6 KiB
Markdown
54 lines
4.6 KiB
Markdown
|
# Лабораторная работа №2 - Разработка простейшего распределенного приложения
|
|||
|
|
|||
|
Цель: изучение техники создания простого распределенного приложения.
|
|||
|
|
|||
|
Задачи:
|
|||
|
|
|||
|
- Согласно вышему варианту (выбирайте любой) разработать два приложения такие, что результат первого является исходными данными для второго.
|
|||
|
- Изучить файлы сборки образов docker и разработать их для созданных приложений.
|
|||
|
- Собрать файл docker-compose.yml для запуска приложений. Разобраться с монтированием каталогов из хост-системы.
|
|||
|
- Правильно закоммитить результат без лишних файлов.
|
|||
|
- Оформить pull request по правилам и отправить его на проверку.
|
|||
|
|
|||
|
# Разработка двух приложений
|
|||
|
|
|||
|
Было решено для первого приложения(worker_1) выбрать 1 вариант - Ищет в каталоге /var/data файл с наибольшим количеством строк и перекладывает его в /var/result/data.txt
|
|||
|
Для второго приложения(worker_2) выбрать 0 вариант - сохраняет произзведение первого и последнего числа из файла /var/result/data.txt в /var/result/result.txt
|
|||
|
|
|||
|
Разработка ведется на языке Go
|
|||
|
|
|||
|
![img.png](img.png)
|
|||
|
|
|||
|
# Запуск
|
|||
|
|
|||
|
Запуск контейнеров производится командой "docker-compose up -d"
|
|||
|
|
|||
|
# Работа программы
|
|||
|
|
|||
|
- Создание двух деррикторий: worker_1 и worker_2 для реализаций двух программ.
|
|||
|
- Создание go.mod для обоих программ и реализация этих программ.
|
|||
|
- Описание Dockerfile для создания образов для обоих программ.
|
|||
|
- ![img_2.png](img_2.png) ![img_3.png](img_3.png)
|
|||
|
- Создание двух репозиториев: data, result, для монтирования их в контейнеры, а также заполнение папки data тремя файлами.
|
|||
|
- ![img_4.png](img_4.png)
|
|||
|
- Описание docker-compose для запуска контейнеров, реализуется build для создания образов на основе dockerfile и у второго контейнера описавыется зависимость depends_on от первого контейнера, чтобы сначала успевал запуститься первый контейнер, а за ним запускался второй. Также описываются volumes, для монтирование папок data и result в контейнеры.
|
|||
|
- ![img_5.png](img_5.png)
|
|||
|
- Сборка и запуска контейнеров.
|
|||
|
- ![img_6.png](img_6.png)
|
|||
|
- Проверка в Docker Desktop контейнеров и образов.
|
|||
|
- ![img_7.png](img_7.png)
|
|||
|
- ![img_8.png](img_8.png)
|
|||
|
- Смотрим, что выдает нам первый воркер в консоль. Он говорит, что первый файл с названием file1.txt имеет 4 строки, и это больше, чем в других файлах. Также текст этого файла был скопирован в файл data.txt
|
|||
|
- ![img_9.png](img_9.png)
|
|||
|
- Смотрим, что выдает нам второй воркер в консоль. Он говорит, что результат умножения сохранен в файл result.txt, а также выдает нам число, лежащее в этом файле.
|
|||
|
- ![img_10.png](img_10.png)
|
|||
|
- Смотрим, что при запуске контейнеров действительно в папке result создалось два файла data.txt и result.txt
|
|||
|
- ![img_11.png](img_11.png)
|
|||
|
- Смотрим, что лежит в эти файлах. В файле data.txt действительно лежат числа из file1.txt, а в файле result.txt лежит результат умножения первого на последнее число.
|
|||
|
- ![img_12.png](img_12.png)
|
|||
|
- ![img_13.png](img_13.png)
|
|||
|
|
|||
|
# Видео
|
|||
|
|
|||
|
Видео с разбором лабораторной работы - https://youtu.be/JHDQOQBBPUs
|