.. | ||
.idea | ||
data | ||
result | ||
screens | ||
worker-1 | ||
worker-2 | ||
docker-compose.yml | ||
README.md |
Лабораторная работа №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
Структура проекта
Работа программы
- Создание двух директорий: worker-1 и worker-2 для реализаций двух программ.
- Описание Dockerfile для создания образов для обоих программ.
Docker файл для первого сервиса
# Используем образ с 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 файл для второго сервиса
# Используем образ с 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
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
Исходные файлы
После запуска контейнера создаются файлы data.txt
и result.txt
:
data.txt
result.txt
Запушенный контейнер
Ссылка на видео
https://drive.google.com/file/d/1kPXcYOX0bRmjzBbg8GBWp0JfFWb2rUGm/view?usp=sharing