70 lines
3.8 KiB
Markdown
70 lines
3.8 KiB
Markdown
|
# Лабораторная работа №2 - Разработка простейшего распределённого приложения
|
|||
|
**Цель**: изучение техники создания простого распределённого приложения.
|
|||
|
|
|||
|
**Задачи**:
|
|||
|
* Согласно варианту (0 и 1) разработать два приложения такие, что результат первого является исходными данными для второго.
|
|||
|
* Изучить файлы сборки образов docker и разработать их для созданных приложений.
|
|||
|
* Собрать файл docker-compose.yml для запуска приложений. Разобраться с монтированием каталогов из хост-системы.
|
|||
|
* Правильно закоммитить результат без лишних файлов.
|
|||
|
* Оформить pull request по правилам и отправить его на проверку.
|
|||
|
***
|
|||
|
## *Ход работы:*
|
|||
|
### Разворачивание сервисов:
|
|||
|
Были разработаны два приложения на ЯП java:
|
|||
|
* worker1 - ищет в каталоге /var/data самый большой по объёму файл и перекладывает его в /var/result/data.txt.
|
|||
|
* worker2 - ищет набольшее число из файла /var/result/data.txt и сохраняет его вторую степень в /var/result/result.txt.
|
|||
|
### Исходные файлы
|
|||
|
Исходные файлы содержать различные числа и отсортированы по размеру.
|
|||
|
|
|||
|
В /var/result/data.txt должны скопироваться числа из наибольшего файла - 3.txt
|
|||
|
|
|||
|
В /var/result/result.txt должно записаться число 15 625 - квадрат максимального числа (125)
|
|||
|
|
|||
|

|
|||
|
### 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"] #запуск java-приложения
|
|||
|
```
|
|||
|
### docker-compose.yml
|
|||
|
Был создан файл docker-compose.yml для разворачивания сервисов:
|
|||
|
```
|
|||
|
version: "3" #формат конфигурации Docker Compose версии 3
|
|||
|
services: #определение сервисов
|
|||
|
worker1:
|
|||
|
build:
|
|||
|
context: /worker1 #путь к контексту сборки
|
|||
|
dockerfile: Dockerfile #имя докерфайла
|
|||
|
volumes:
|
|||
|
- .\var\data:/var/data #том для папки файлов
|
|||
|
- .\var\result:/var/result #том для папки результатов
|
|||
|
worker2:
|
|||
|
depends_on: #зависимость: worker2 не будет запущен, пока worker1 не завершит свой запуск
|
|||
|
- worker1
|
|||
|
build:
|
|||
|
context: /worker2 #путь к контексту сборки
|
|||
|
dockerfile: Dockerfile #имя докерфайла
|
|||
|
volumes:
|
|||
|
- .\var\result:/var/data #том для папки файлов
|
|||
|
- .\var\result:/var/result #том для папки результатов
|
|||
|
```
|
|||
|
### docker-compose up -d
|
|||
|
Создание контейнеров:
|
|||
|
|
|||
|

|
|||
|
***
|
|||
|
## *Результат:*
|
|||
|

|
|||
|
|
|||
|

|