# Лабораторная работа №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 Приложения выполнены на языке Java <p> <div>Worker-1</div> <img src="screens/img1.png" width="650" title="Worker-1"> </p> <p> <div>Worker-2</div> <img src="screens/img2.png" width="650" title="Worker-2"> </p> # Запуск Запуск контейнеров производится командой "docker-compose up -d" # Работа программы - Создание двух деррикторий: worker-1 и worker-2 для реализаций двух программ. - Описание Dockerfile для создания образов для обоих программ. <p> <div>Worker-1 Dockerfile</div> <img src="screens/img3.png" width="650" title="Worker-1 Dockerfile"> </p> <p> <div>Worker-2 Dockerfile</div> <img src="screens/img4.png" width="650" title="Worker-2 Dockerfile"> </p> - Создание двух репозиториев: data, result, для монтирования их в контейнеры. <p> <div>data</div> <img src="screens/img5.png" width="650" title="data"> </p> <p> <div>result</div> <img src="screens/img6.png" width="650" title="result"> </p> <p> <div>f3.txt</div> <img src="screens/img7.png" width="650" title="f3.txt"> </p> <p> <div>file_with_a_very_long_name_that_is_often_used_in_programming.txt</div> <img src="screens/img8.png" width="650" title="file_with_a_very_long_name_that_is_often_used_in_programming.txt"> </p> <p> <div>file1.txt</div> <img src="screens/img9.png" width="650" title="file1.txt"> </p> - Описание docker-compose: запускает контейнеры, реализует build для создания образов на основе dockerfile и у второго контейнера описавыется зависимость depends_on от первого контейнера, чтобы сначала запустился первый контейнер, а за ним запустился второй. Также описываются volumes, для монтирование папок data и result в контейнеры. <p> <div>docker-compose</div> <img src="screens/img10.png" width="650" title="docker-compose"> </p> <p> <div>Сборка и запуска контейнеров</div> <img src="screens/img11.png" width="650" title="Сборка и запуска контейнеров"> </p> <p> <div>Проверка в Docker Desktop контейнеров и образов</div> <img src="screens/img12.png" width="650" title="Проверка в Docker Desktop контейнеров и образов"> </p> <p> <img src="screens/img13.png" width="650" title="Проверка в Docker Desktop контейнеров и образов"> </p> <p> <div>Смотрим, что выдает нам первый воркер в консоль</div> <img src="screens/img14.png" width="650" title="Смотрим, что выдает нам первый воркер в консоль"> </p> <p> <div>Смотрим, что выдает нам второй воркер в консоль</div> <img src="screens/img15.png" width="650" title="Смотрим, что выдает нам второй воркер в консоль"> </p> <p> <div>Смотрим, что при запуске контейнеров действительно в папке result создалось два файла data.txt и result.txt</div> <img src="screens/img16.png" width="650" title="Смотрим, что при запуске контейнеров действительно в папке result создалось два файла data.txt и result.txt"> </p> <p> <div>Смотрим, что лежит в файле data.txt</div> <img src="screens/img17.png" width="650" title="Смотрим, что лежит в файле data.txt"> </p> <p> <div>Смотрим, что лежит в файле result.txt</div> <img src="screens/img18.png" width="650" title="Смотрим, что лежит в файле result.txt"> </p> # Видео Видео с разбором лабораторной работы - https://youtu.be/o_sTok7W22s