Мой вопрос был основан на ситуации, которая происходила ежедневно на работе. При создании одного файла докеров и использовании его для создания двух сервисов в докере они обмениваются данными с одними и теми же файлами и папками?
Из этого принципа было бы, у меня есть сервис "А", который сгенерировал что-то с "командой", написанной в docker compose, на примере API-запроса, загружающего файл "random.txt", а с сервисом "Б" я хотите иметь возможность воспользоваться этим файлом. Используя тот же файл докеров, я создаю связь между точками «А» и «Б».
Это позволит избежать создания тома в докере с одним и тем же путем для обеих точек обслуживания «A» и «B». Когда точка «А» выполняется что-то, что приносит файл на машину, к которой подключен его том. Чтобы можно было захватить в "Б". Мне нужен еще один том.
Я поставлю два примера изображений.
Ребята, если я ошибаюсь в какой-либо концепции, пожалуйста, поправьте меня.
@Kamilkuk Смысл этого поста, если есть возможность это сделать. В Docker нет сценариев, потому что я не знаю, как выразить это строками. Отсюда мое объяснение.
@ Рон, я знаю, как я должен публиковать, не все будет иметь код.
Вопрос не совсем ясен, некоторых фрагментов кода не хватает, но сделаю несколько предположений.
Независимо от того, используете ли вы один и тот же файл Dockerfile или нет, единственным способом обмена файлами между контейнерами является использование томов или привязка монтирования с одним и тем же путем к хосту.
Вот пример
version: "3.9"
services:
service-1:
image: ubuntu
volumes:
- datavolume:/yourdata
entrypoint: touch /yourdata/file1
service-2:
image: ubuntu
depends_on:
- service-1
volumes:
- datavolume:/yourdata
entrypoint: ls /yourdata
volumes:
datavolume:
Здесь service-1
создаст файл с именем file1
в томе datavolume
service-2
также монтирует тот же том и, таким образом, сможет получить доступ к file1
, созданному первой службой. Вы также можете представить, что file1
появился из вызова API, а не был создан командой touch
.
Вот как это выглядит, когда я запустил вышеуказанный файл компоновки:
В этом случае оба сервиса используют один и тот же образ ubuntu
(или это может быть ваш собственный образ, созданный из Dockerfile. Но опять же, это ничего не меняет в отношении томов. Это могут быть 2 совершенно разных образа, и при этом они могут использовать одни и те же тома. и файлы в этих томах.
Ваше здоровье
do they communicate
Невозможно ответить о фактическом состоянии, не зная, что это такое. Опубликуйте свой dockerfile и конфигурацию docker-compose. То, что вы хотите или должны делать, зависит исключительно от вас. Вы можете настроить базу данных postgres или сервер NFS или что-то еще для хранения файлов, или вы можете использовать том или точку монтирования. Я не понимаю, о чем именно вы спрашиваете - о фактическом состоянии некоторых ваших сервисов или о дизайне реализации.