85 lines
4.8 KiB
Markdown
85 lines
4.8 KiB
Markdown
|
# Лабораторная работа №2 - Разработка простейшего распределенного приложения
|
|||
|
|
|||
|
Цель: изучение техники создания простого распределенного приложения.
|
|||
|
|
|||
|
Задачи:
|
|||
|
|
|||
|
- Согласно вышему варианту (выбирайте любой) разработать два приложения такие, что результат первого является исходными данными для второго.
|
|||
|
- Изучить файлы сборки образов docker и разработать их для созданных приложений.
|
|||
|
- Собрать файл docker-compose.yml для запуска приложений. Разобраться с монтированием каталогов из хост-системы.
|
|||
|
- Правильно закоммитить результат без лишних файлов.
|
|||
|
- Оформить pull request по правилам и отправить его на проверку.
|
|||
|
|
|||
|
# Разработка двух приложений
|
|||
|
|
|||
|
Вариант первого приложения(worker-1): 5 - Ищет в каталоге /var/data файл с самым коротким названием и перекладывает его в /var/result/data.txt
|
|||
|
Вариант второго приложения(worker-2): 1 - Ищет набольшее число из файла /var/data/data.txt и сохраняет его вторую степень в /var/result/result.txt
|
|||
|
|
|||
|
<p>
|
|||
|
<div>Общая структура проекта</div>
|
|||
|
<img src="screens/img1.png" width="650" title="Общая структура проекта">
|
|||
|
</p>
|
|||
|
|
|||
|
# Работа программы
|
|||
|
|
|||
|
- Создание двух директорий: worker-1 и worker-2 для реализаций двух программ.
|
|||
|
- Описание Dockerfile для создания образов для обоих программ.
|
|||
|
<p>
|
|||
|
<div>Worker-1 Dockerfile</div>
|
|||
|
<img src="screens/img2.png" width="650" title="Worker-1 Dockerfile">
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
<div>Worker-2 Dockerfile</div>
|
|||
|
<img src="screens/img3.png" width="650" title="Worker-2 Dockerfile">
|
|||
|
</p>
|
|||
|
- Содержимое в файлах в папке data
|
|||
|
<p>
|
|||
|
<img src="screens/img4.png" width="50" title="1">
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
<img src="screens/img5.png" width="50" title="2">
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
<img src="screens/img6.png" width="50" title="3">
|
|||
|
</p>
|
|||
|
- Описание docker-compose: запускает контейнеры, реализует build для создания образов на основе dockerfile и у второго контейнера описавыется зависимость depends_on от первого контейнера, чтобы сначала запустился первый контейнер, а за ним запустился второй. Также описываются volumes, для монтирование папок data и result в контейнеры.
|
|||
|
<p>
|
|||
|
<div>docker-compose</div>
|
|||
|
<img src="screens/img7.png" width="650" title="docker-compose">
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
<div>Сборка и запуска контейнеров</div>
|
|||
|
<img src="screens/img8.png" width="650" title="Сборка и запуска контейнеров">
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
<div>Проверка в Docker Desktop контейнеров и образов</div>
|
|||
|
<img src="screens/img9.png" width="650" title="Проверка в Docker Desktop контейнеров и образов">
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
<img src="screens/img10.png" width="650" title="Проверка в Docker Desktop контейнеров и образов">
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
<div>Смотрим консоль первого воркера</div>
|
|||
|
<img src="screens/img11.png" width="650" title="Смотрим, консоль первого воркера">
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
<div>Смотрим консоль второго воркера</div>
|
|||
|
<img src="screens/img12.png" width="650" title="Смотрим, консоль второго воркера">
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
<div>Смотрим результат работы контейнера, что в папке result создалось два файла data.txt и result.txt</div>
|
|||
|
<img src="screens/img13.png" width="150" title="Смотрим результат работы контейнера, что в папке result создалось два файла data.txt и result.txt">
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
<div>Смотрим data.txt</div>
|
|||
|
<img src="screens/img14.png" width="50" title="Смотрим data.txt">
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
<div>Смотрим result.txt</div>
|
|||
|
<img src="screens/img15.png" width="150" title="Смотрим result.txt">
|
|||
|
</p>
|
|||
|
|
|||
|
# Видео
|
|||
|
|
|||
|
Видео с разбором лабораторной работы - https://drive.google.com/file/d/1LW_U75GK05_xYk9zd8RKpc-K6zeo4ZYJ/view?usp=sharing
|