Связь между сервисами внутри сети docker compose

Мой вопрос был основан на ситуации, которая происходила ежедневно на работе. При создании одного файла докеров и использовании его для создания двух сервисов в докере они обмениваются данными с одними и теми же файлами и папками?

Из этого принципа было бы, у меня есть сервис "А", который сгенерировал что-то с "командой", написанной в docker compose, на примере API-запроса, загружающего файл "random.txt", а с сервисом "Б" я хотите иметь возможность воспользоваться этим файлом. Используя тот же файл докеров, я создаю связь между точками «А» и «Б».

Это позволит избежать создания тома в докере с одним и тем же путем для обеих точек обслуживания «A» и «B». Когда точка «А» выполняется что-то, что приносит файл на машину, к которой подключен его том. Чтобы можно было захватить в "Б". Мне нужен еще один том.

Я поставлю два примера изображений.

Ребята, если я ошибаюсь в какой-либо концепции, пожалуйста, поправьте меня.

do they communicate Невозможно ответить о фактическом состоянии, не зная, что это такое. Опубликуйте свой dockerfile и конфигурацию docker-compose. То, что вы хотите или должны делать, зависит исключительно от вас. Вы можете настроить базу данных postgres или сервер NFS или что-то еще для хранения файлов, или вы можете использовать том или точку монтирования. Я не понимаю, о чем именно вы спрашиваете - о фактическом состоянии некоторых ваших сервисов или о дизайне реализации.
KamilCuk 13.04.2023 14:45

@Kamilkuk Смысл этого поста, если есть возможность это сделать. В Docker нет сценариев, потому что я не знаю, как выразить это строками. Отсюда мое объяснение.

eddi 13.04.2023 23:54

@ Рон, я знаю, как я должен публиковать, не все будет иметь код.

eddi 13.04.2023 23:56
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
4
67
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вопрос не совсем ясен, некоторых фрагментов кода не хватает, но сделаю несколько предположений.

Независимо от того, используете ли вы один и тот же файл 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 совершенно разных образа, и при этом они могут использовать одни и те же тома. и файлы в этих томах.

Ваше здоровье

Другие вопросы по теме