DAS_2023_1/simonov_nikita_lab_2/README.md

118 lines
4.1 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
Цель: изучение техники создания простого распределенного приложения.
Задачи:
- Согласно вышему варианту (выбирайте любой) разработать два приложения такие, что результат первого является исходными данными для второго.
- Изучить файлы сборки образов docker и разработать их для созданных приложений.
- Собрать файл docker-compose.yml для запуска приложений. Разобраться с монтированием каталогов из хост-системы.
- Правильно закоммитить результат без лишних файлов.
- Оформить pull request по правилам и отправить его на проверку.
# Разработка двух приложений
Вариант первого приложения(worker-1): 5 - Ищет в каталоге /var/data файл с самым коротким названием и перекладывает его в /var/result/data.txt
Вариант второго приложения(worker-2): 1 - Ищет набольшее число из файла /var/data/data.txt и сохраняет его вторую степень в /var/result/result.txt
## Структура проекта
![](/screens/Screenshot_1.png)
# Работа программы
- Создание двух директорий: worker-1 и worker-2 для реализаций двух программ.
- Описание Dockerfile для создания образов для обоих программ.
## Docker файл для первого сервиса
```yml
# Используем образ с Java
FROM openjdk:21
# Создаем директории для данных и результата внутри контейнера
RUN mkdir /var/data
RUN mkdir /var/result
# Создаем директорию приложения внутри контейнера
WORKDIR /app
# Копируем исходные файлы вашего Java-приложения внутрь контейнера
COPY src /app/src
# Компилируем Java-код
RUN javac /app/src/FindShortestFileName.java
# Запускаем Java-приложение
CMD ["java", "-cp", "/app/src", "FindShortestFileName"]
```
## Docker файл для второго сервиса
```yml
# Используем образ с Java
FROM openjdk:21
# Создаем директории для данных и результата внутри контейнера
RUN mkdir /var/data
RUN mkdir /var/result
# Создаем директорию приложения внутри контейнера
WORKDIR /app
# Копируем исходные файлы вашего Java-приложения внутрь контейнера
COPY src /app/src
Компилируем Java-код
RUN javac /app/src/FindingLargestNumberFile.java
# Запускаем Java-приложение
CMD ["java", "-cp", "/app/src", "FindingLargestNumberFile"]
```
## Docker-compose
```yml
services:
worker-1:
build:
context: /worker-1
dockerfile: Dockerfile
volumes:
- D:\рил\simonov_nikita_lab_2\data:/var/data
- D:\рил\simonov_nikita_lab_2\result:/var/result
worker-2:
build:
context: /worker-2
dockerfile: Dockerfile
volumes:
- D:\рил\simonov_nikita_lab_2\data:/var/data
- D:\рил\simonov_nikita_lab_2\result:/var/result
depends_on:
- worker-1
```
## Исходные файлы
![](/screens/Screenshot_5.png)
## После запуска контейнера создаются файлы `data.txt` и `result.txt`:
![](/screens/Screenshot_2.png)
- `data.txt`
![](/screens/Screenshot_3.png)
- `result.txt`
![](/screens/Screenshot_4.png)
# Запушенный контейнер
![](/screens/Screenshot_6.png)
# Ссылка на видео
https://drive.google.com/file/d/1kPXcYOX0bRmjzBbg8GBWp0JfFWb2rUGm/view?usp=sharing