35 lines
2.8 KiB
Markdown
35 lines
2.8 KiB
Markdown
|
## Вариант 1 сервиса
|
|||
|
0. Ищет в каталоге /var/data самый большой по объёму файл и перекладывает его в /var/result/data.txt.
|
|||
|
|
|||
|
## Вариант 2 сервиса
|
|||
|
0. Сохраняет произведение первого и последнего числа из файла /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 для запуска двух программ, обрабатывающих данные в контейнерах.
|
|||
|
|
|||
|
|
|||
|
[Видео](https://disk.yandex.ru/d/FFqx6_tdtX8s-g)
|