DAS_2023_1/martysheva_tamara_lab_2/README.md

70 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Лабораторная работа №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)
![](images/files.jpg "")
### 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
Создание контейнеров:
![](images/downloading.jpg "")
***
## *Результат:*
![](images/result-dockerhub.jpg "")
![](images/result-files.jpg "")