DAS_2023_1/podkorytova_yulia_lab_2
2023-12-15 16:38:14 +04:00
..
data podkorytova_yulia_lab_2 is ready 2023-12-15 16:29:17 +04:00
images podkorytova_yulia_lab_2 is ready 2023-12-15 16:29:17 +04:00
result podkorytova_yulia_lab_2 is ready 2023-12-15 16:38:14 +04:00
worker-1 podkorytova_yulia_lab_2 is ready 2023-12-15 16:29:17 +04:00
worker-2 podkorytova_yulia_lab_2 is ready 2023-12-15 16:29:17 +04:00
docker-compose.yml podkorytova_yulia_lab_2 is ready 2023-12-15 16:29:17 +04:00
README.md podkorytova_yulia_lab_2 is ready 2023-12-15 16:29:47 +04:00

Лабораторная работа 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

Скриншоты

Исходные файлы

Результаты сборки и запуска программ в консоли

Dockerhub

Результат выполнения программы 2, выведенный на экран

Файлы data.txt и result.txt

Ссылка на видео:

https://drive.google.com/file/d/13WUxSGgQjvusT40UQc1C3ZOVk4-PX9oH/view?usp=sharing