.. | ||
service_1 | ||
service_2 | ||
docker-compose.yml | ||
readme.md |
Вариант 1 сервиса
- Ищет в каталоге /var/data самый большой по объёму файл и перекладывает его в /var/result/data.txt.
Вариант 2 сервиса
- Сохраняет произведение первого и последнего числа из файла /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 для запуска двух программ, обрабатывающих данные в контейнерах.