DAS_2023_1/senkin_alexander_lab_2/README.md

54 lines
4.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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