diff --git a/podkorytova_yulia_lab_2/README.md b/podkorytova_yulia_lab_2/README.md new file mode 100644 index 0000000..5717a61 --- /dev/null +++ b/podkorytova_yulia_lab_2/README.md @@ -0,0 +1,90 @@ +# Лабораторная работа 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 \ No newline at end of file