DAS_2024_1/agliullov_daniyar_lab_2
2024-12-30 22:42:02 +04:00
..
service_1 agliullov_daniyar_lab_2 is ready 2024-12-30 22:42:02 +04:00
service_2 agliullov_daniyar_lab_2 is ready 2024-12-30 22:42:02 +04:00
docker-compose.yml agliullov_daniyar_lab_2 is ready 2024-12-30 22:42:02 +04:00
readme.md agliullov_daniyar_lab_2 is ready 2024-12-30 22:42:02 +04:00

Вариант 1 сервиса

  1. Ищет в каталоге /var/data самый большой по объёму файл и перекладывает его в /var/result/data.txt.

Вариант 2 сервиса

  1. Сохраняет произведение первого и последнего числа из файла /var/data/data.txt в /var/result/result.txt.

Для обоих приложений создадим Dockerfile. Вот пример для service-1 файл для service-2 будет идентичен, из-за одной версии питона и одного набора библеотек (используются только стандартная библиотека):

Пояснение:

  • Stage 1: Мы используем python:3.10-slim как образ для сборки, где копируем файл main.py и устанавливаем зависимости, если это необходимо.
  • Stage 2: В этом слое мы копируем скомпилированные файлы из предыдущего этапа и определяем команду для запуска приложения.

Аналогичный Dockerfile будет для service_2.

Docker Compose файл

Теперь нужно настроить файл docker-compose.yml, который позволит запустить оба приложения:

Пояснение:

  • services: Мы объявляем два сервиса — service_1 и service_2.
  • build: Указываем контекст сборки для каждого сервиса (директории, где находятся Dockerfile и код).
  • volumes: Монтируем локальные директории ./data и ./result в контейнеры, чтобы обмениваться файлами между сервисами.
  • depends_on: Задаем зависимость service_2 от service_1, чтобы второй сервис запускался только после первого.

Заключение

Это пример, как можно реализовать простейшее распределённое приложение с использованием Docker. Первое приложение генерирует данные для второго, который обрабатывает их и записывает результат в файл. Docker и Docker Compose позволяют легко управлять и изолировать каждое приложение.ker Compose для запуска двух программ, обрабатывающих данные в контейнерах.

Видео