DAS_2023_1/mashkova_margarita_lab_2/README.md

99 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
## ПИбд-42 Машкова Маргарита
## Задание
1. Согласно варианту разработать два приложения такие, что результат первого является исходными данными для второго.
2. Изучить файлы сборки образов docker и разработать их для созданных приложений.
3. Собрать файл `docker-compose.yml` для запуска приложений. Разобраться с монтированием каталогов из хост-системы.
> Docker Compose использует файл docker-compose.yml для создания и запуска всех сервисов, определенных в конфигурации,
> с помощью одной команды.
- Содержимое исходных файлов - целые числа.
- Результат выполнения программы 2 необходимо дополнительно вывести на экран.
### Функциональность приложений:
- `worker-1` - Формирует файл `/var/result/data.txt` так, что каждая строка файла - количество символов в именах файлов
из каталога `/var/data`.
- `worker-2` - Ищет наименьшее число из файла `/var/result/data.txt` и сохраняет его третью степень
в `/var/result/result.txt`.
## Запуск программы
В директории с файлом `docker-compose.yml` выполнить команду:
```
docker-compose up -d
```
## Описание работы программы
### Dockerfile сервиса `worker-1`:
```
# Использование образа java
FROM openjdk:17
# Создание директорий
RUN mkdir /var/data
RUN mkdir /var/result
# Рабочая директория
WORKDIR /app
# Копирование исходных файлов
COPY src/Main.java /app/Main.java
# Компиляция
RUN javac Main.java
# Запуск
CMD ["java", "Main"]
```
Dockerfile сервиса `worker-2` аналогичен.
### Полный файл конфигурации `docker-compose.yml`:
```
version: '3'
services:
worker-1:
build:
context: /worker-1
dockerfile: Dockerfile
container_name: worker-1
volumes: # Монтирование
- .\data:/var/data
- .\result:/var/result
worker-2:
build:
context: /worker-2
dockerfile: Dockerfile
container_name: worker-2
depends_on: # Зависимость сервисов
- worker-1
volumes: # Монтирование
- .\data:/var/data
- .\result:/var/result
```
## Запуск сервисов
### Содержимое файлов:
Т.к. первой программе важно не содержимое файлов, а количество символов в их названиях, то файлы в директории `/data`
пустые.
Названия файлов и количество символов в названии:
> - digits.txt (10)
> - integers.txt (12)
> - numbers.txt (11)
Содержимое файлов каталога `/result`:
> - data.txt: <br>10<br> 12<br> 11
> - result.txt: 1000
### Результат выполнения команды `docker-compose up -d`:
![Вывод в консоли](build_images.png)
### Созданные образы:
![Созданные образы](images.png)
### Созданные контейнеры:
![Созданные контейнеры](containers.png)
### Результаты выполнения программ:
![results](results.png)
Ссылка на видео:
https://youtu.be/8AG78ip0Bew