Контейнер Docker - только ВНУТРЕННИЕ TCP-порты для связи между 2 компонентами внутри одного контейнера - PullRequest
0 голосов
/ 10 марта 2019

Я пытаюсь выяснить, есть ли какие-либо ошибки при открытии порта (tcp) внутри контейнера, а затем другой процесс, потребляющий (чтение / запись) тот же порт ВНУТРИ ЖЕ контейнера.Нужно ли мне составить / выставить / опубликовать этот порт?Итак, по сути, есть ли что-то конкретное, что нужно сделать / осознать, чтобы выставить порт в контейнере для внутренних (для того же контейнера) целей?

Ответы [ 2 ]

0 голосов
/ 11 марта 2019

Правильно поддерживать жизненный цикл двух процессов сложно.Если один процесс умирает, вы хотите, чтобы что-то заметил и либо убил другой процесс, либо перезапустил один, и вы, вероятно, хотите знать, что это происходит.docker logs, вероятно, не будет автоматически объединять выходные данные двух процессов (и в зависимости от того, как вы их запускаете, может и не захватывать).Если одному процессу требуется больше вычислительной мощности, чем другому, вы не можете масштабировать один без масштабирования другого;если вы обновляете программное обеспечение в одном процессе, вы не можете перезапустить его, не перезапуская другой.

Короче говоря: обычно это не рекомендуется в качестве наилучшей практики;запуск процессов в двух отдельных контейнерах обычно предпочтителен.

Если вы сделаете это, в этом случае только , два процесса в одном контейнере будут видеть друг друга как localhost,и вы можете передать это как параметр переменной среды для одного процесса, чтобы увидеть другой.Вам не нужно специально «выставлять» или «публиковать» порт.Типичный файл docker-compose.yml может выглядеть как

version: '3'
services:
  myapp:
    build: .
    ports: ['8080:8080']
    env:
      - BACKEND_URL: 'http://localhost:12345'

, но лучший файл docker-compose.yml может выглядеть как

version: 3
services:
  myapp:
    build: .
    ports: ['8080:8080']
    env:
      - BACKEND_URL: 'http://backend:12345'
    command: 'myapp -bind 0.0.0.0:8080'
  backend:
    build: .
    command: 'backend -bind 0.0.0.0:12345'
0 голосов
/ 10 марта 2019

В таком случае ничего конкретного не нужно делать.Вы можете игнорировать любую функцию докера (открыть или опубликовать порт).

Просто подключите второй процесс в этом контейнере к localhost:<port of opened by the first process>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...