# Лабораторная работа 2. Разработка простейшего распределённого приложения ### Задание на лабораторную работу 1. Согласно варианту разработать два приложения такие, что результат первого является исходными данными для второго. 2. Изучить файлы сборки образов docker и разработать их для созданных приложений. 3. Собрать файл docker-compose.yml для запуска приложений. Разобраться с монтированием каталогов из хост-системы. **Программа 1:** Ищет в каталоге /var/data файл с самым коротким названием и перекладывает его в /var/result/data.txt. **Программы 2:** Ищет наименьшее число из файла /var/result/data.txt и сохраняет количество таких чисел из последовательности в /var/result/result.txt. *** ### Как запустить лабораторную работу Для сборки и запуска программ необходимо перейти в директорию с файлом `docker-compose.yaml` и выполнить команду: ``` docker compose up --build ``` *** ### Описание работы Содержимое `Dockerfile` для сервиса `worker-1`: ``` # использование образа java FROM openjdk:17 # создание директорий для файлов RUN mkdir /var/data RUN mkdir /var/result # установка рабочей директории проекта WORKDIR /app # копирование исходных файлов COPY src /app/src # компиляция RUN javac /app/src/App1.java # запуск java-приложения CMD ["java", "-cp", "/app/src", "App1"] ``` Аналогично был составлен `Dockerfile` для сервиса `worker-2`. Файл `docker-compose.yml` содержит: - 2 сервиса (worker-1, worker-2); - директиву build для каждого сервиса; - монтирование папок; - зависимость одного сервиса от другого. ``` version: '3' services: worker-1: # название 1 сервиса build: # директива build для сборки образа context: /worker-1 dockerfile: Dockerfile volumes: # монтирование папок - .\data:/var/data - .\result:/var/result worker-2: # название 2 сервиса build: # директива build для сборки образа context: /worker-2 dockerfile: Dockerfile depends_on: # зависимость сервисов - worker-1 volumes: # монтирование папок - .\data:/var/data - .\result:/var/result ``` *** ### Скриншоты ***Исходные файлы*** ![](images/files.jpg) ***Результаты сборки и запуска программ в консоли*** ![](images/console.jpg) ***Dockerhub*** ![](images/dockerhub.jpg) ***Результат выполнения программы 2, выведенный на экран*** ![](images/result.jpg) ***Файлы `data.txt` и `result.txt`*** ![](images/files_res.jpg) ### Ссылка на видео: https://drive.google.com/file/d/13WUxSGgQjvusT40UQc1C3ZOVk4-PX9oH/view?usp=sharing