3.6 KiB
3.6 KiB
Лабораторная работа 2. Разработка простейшего распределённого приложения
Задание на лабораторную работу
- Согласно варианту разработать два приложения такие, что результат первого является исходными данными для второго.
- Изучить файлы сборки образов docker и разработать их для созданных приложений.
- Собрать файл 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
Скриншоты
Результаты сборки и запуска программ в консоли
Результат выполнения программы 2, выведенный на экран
Ссылка на видео:
https://drive.google.com/file/d/13WUxSGgQjvusT40UQc1C3ZOVk4-PX9oH/view?usp=sharing