99 lines
3.8 KiB
Markdown
99 lines
3.8 KiB
Markdown
# Лабораторная работа №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
|