DAS_2023_1/mashkova_margarita_lab_2/README.md

3.8 KiB
Raw Permalink Blame History

Лабораторная работа №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:

Вывод в консоли

Созданные образы:

Созданные образы

Созданные контейнеры:

Созданные контейнеры

Результаты выполнения программ:

results

Ссылка на видео: https://youtu.be/8AG78ip0Bew