DAS_2023_1/senkin_alexander_lab_2
2023-10-22 20:57:20 +04:00
..
data senkin_alexander_lab_2 is ready 2023-10-22 20:57:20 +04:00
result senkin_alexander_lab_2 is ready 2023-10-22 20:57:20 +04:00
worker_1 senkin_alexander_lab_2 is ready 2023-10-22 20:57:20 +04:00
worker_2 senkin_alexander_lab_2 is ready 2023-10-22 20:57:20 +04:00
docker-compose.yml senkin_alexander_lab_2 is ready 2023-10-22 20:57:20 +04:00
img_1.png senkin_alexander_lab_2 is ready 2023-10-22 20:57:20 +04:00
img_2.png senkin_alexander_lab_2 is ready 2023-10-22 20:57:20 +04:00
img_3.png senkin_alexander_lab_2 is ready 2023-10-22 20:57:20 +04:00
img_4.png senkin_alexander_lab_2 is ready 2023-10-22 20:57:20 +04:00
img_5.png senkin_alexander_lab_2 is ready 2023-10-22 20:57:20 +04:00
img_6.png senkin_alexander_lab_2 is ready 2023-10-22 20:57:20 +04:00
img_7.png senkin_alexander_lab_2 is ready 2023-10-22 20:57:20 +04:00
img_8.png senkin_alexander_lab_2 is ready 2023-10-22 20:57:20 +04:00
img_9.png senkin_alexander_lab_2 is ready 2023-10-22 20:57:20 +04:00
img_10.png senkin_alexander_lab_2 is ready 2023-10-22 20:57:20 +04:00
img_11.png senkin_alexander_lab_2 is ready 2023-10-22 20:57:20 +04:00
img_12.png senkin_alexander_lab_2 is ready 2023-10-22 20:57:20 +04:00
img_13.png senkin_alexander_lab_2 is ready 2023-10-22 20:57:20 +04:00
img.png senkin_alexander_lab_2 is ready 2023-10-22 20:57:20 +04:00
README.md senkin_alexander_lab_2 is ready 2023-10-22 20:57:20 +04:00

Лабораторная работа №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

Запуск

Запуск контейнеров производится командой "docker-compose up -d"

Работа программы

  • Создание двух деррикторий: worker_1 и worker_2 для реализаций двух программ.
  • Создание go.mod для обоих программ и реализация этих программ.
  • Описание Dockerfile для создания образов для обоих программ.
  • img_2.png img_3.png
  • Создание двух репозиториев: data, result, для монтирования их в контейнеры, а также заполнение папки data тремя файлами.
  • img_4.png
  • Описание docker-compose для запуска контейнеров, реализуется build для создания образов на основе dockerfile и у второго контейнера описавыется зависимость depends_on от первого контейнера, чтобы сначала успевал запуститься первый контейнер, а за ним запускался второй. Также описываются volumes, для монтирование папок data и result в контейнеры.
  • img_5.png
  • Сборка и запуска контейнеров.
  • img_6.png
  • Проверка в Docker Desktop контейнеров и образов.
  • img_7.png
  • img_8.png
  • Смотрим, что выдает нам первый воркер в консоль. Он говорит, что первый файл с названием file1.txt имеет 4 строки, и это больше, чем в других файлах. Также текст этого файла был скопирован в файл data.txt
  • img_9.png
  • Смотрим, что выдает нам второй воркер в консоль. Он говорит, что результат умножения сохранен в файл result.txt, а также выдает нам число, лежащее в этом файле.
  • img_10.png
  • Смотрим, что при запуске контейнеров действительно в папке result создалось два файла data.txt и result.txt
  • img_11.png
  • Смотрим, что лежит в эти файлах. В файле data.txt действительно лежат числа из file1.txt, а в файле result.txt лежит результат умножения первого на последнее число.
  • img_12.png
  • img_13.png

Видео

Видео с разбором лабораторной работы - https://youtu.be/JHDQOQBBPUs