# Лабораторная работа №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:
10
12
11 > - result.txt: 1000 ### Результат выполнения команды `docker-compose up -d`: ![Вывод в консоли](build_images.png) ### Созданные образы: ![Созданные образы](images.png) ### Созданные контейнеры: ![Созданные контейнеры](containers.png) ### Результаты выполнения программ: ![results](results.png) Ссылка на видео: https://youtu.be/8AG78ip0Bew