**Задание** *** Цель: изучение техники создания простого распределённого приложения. **Задачи** *** Согласно варианту (0 и 1) разработать два приложения такие, что результат первого является исходными данными для второго. Изучить файлы сборки образов docker и разработать их для созданных приложений. Собрать файл docker-compose.yml для запуска приложений. Разобраться с монтированием каталогов из хост-системы. Правильно закоммитить результат без лишних файлов. Оформить pull request по правилам и отправить его на проверку. **Ход работы** *** **Разворачивание сервисов:** *** Были разработаны два приложения на java: worker-1 - Формирует файл /var/result/data.txt из файла, где было найдено самое большое число /var/data. worker-2 - Ищет набольшее число из файла /var/result/data.txt и сохраняет его вторую степень в /var/result/result.txt. **Исходные файлы** Исходные файлы содержат целые числа. В /var/result/data.txt проверяются числа из каждого файла и выбирается самое большое **Firsttxt.txt:** 1 2 3 4 5 **Secondtxt.txt** 1 2 3 **Thirdtxt.txt** 1 2 3 4 5 6 7 8 9 10 В /var/result/result.txt записывается число 100 - квадрат наибольшего числа - 10 **Dockerfile** Для данной работы были созданы идентичные докер-файлы в обоих проектах. ```` FROM openjdk:17 RUN mkdir /var/data RUN mkdir /var/result WORKDIR /app COPY src /app/src RUN javac /app/src/Main.java CMD ["java", "-cp", "/app/src", "Main"] ```` FROM - выбор базового образа RUN - создание директории внутри контейнера WORKDIR - установка рабочей директории для последующих команд COPY - копирование содержимого директории внутрь контейнера RUN - компиляция исходного кода Main.java внутри контейнера CMD - определение команды, которая выполняется при запуске контейнера. В данном случае происходит запуск программы на java и указывается пусть до Main.java **docker-compose.yml** ```` version: "3" #формат конфигурации Docker Compose версии 3 services: #определение сервисов worker1: build: context: /worker-1 #путь к контексту сборки dockerfile: Dockerfile #имя докерфайла volumes: - .\var\data:/var/data #том для папки файлов - .\var\result:/var/result #том для папки результатов worker2: - depends_on: #зависимость: worker2 не будет запущен, пока worker1 не завершит свой запуск worker1 build: context: /worker-2 #путь к контексту сборки - dockerfile: Dockerfile #имя докерфайла - volumes: - .\var\result:/var/data #том для папки файлов - .\var\result:/var/result #том для папки результатов ```` Видео: https://disk.yandex.ru/d/jpeOKQ_PAO0c0Q