Разобрать случайный порт на docker -compose.yml - PullRequest
1 голос
/ 07 февраля 2020

Мне нужно несколько экземпляров одного и того же приложения, для этого я использую server.port=0 для запуска приложения в произвольном порту. Мой вопрос заключается в том, как я могу сопоставить случайно сгенерированный порт с docker -compose.yml для создания нескольких экземпляров. Я использую пружинный ботинок на заднем конце. Я не могу найти никакого решения. Любая помощь высоко ценится.

1 Ответ

1 голос
/ 07 февраля 2020

Каждый контейнер Docker запускает отдельный процесс в изолированном сетевом пространстве имен, поэтому в этом нет необходимости. Выберите фиксированный порт. Для служб HTTP общие номера портов включают 80, 3000, 8000 и 8080, в зависимости от разрешений и времени выполнения языка (80 требует повышенных привилегий, 3000 по умолчанию для узла и т. Д.). Точный номер порта не имеет значения.

Вы получаете доступ к порту из-за пределов Docker пространства, используя опубликованный порт. Если вы используете несколько контейнеров, существует вероятность конфликта, если несколько служб используют один и тот же порт хоста, чего, вероятно, вы и пытаетесь избежать. В параметре docker run -p или параметре Docker Compose ports: можно перечислить только порт, работающий внутри контейнера, и Docker выберет порт хоста. для вас.

version: "3"
services:
  web:
    image: ...
    ports:
      - "8000"                       # no explicit host port
    command: ... -Dserver.port=8000  # fixed container port

docker-compose port web 8000 сообщит вам номер порта хоста (publi c). Для связи между контейнерами в одном и том же файле docker-compose.yml вы можете использовать имя службы и (фиксированный, известный) внутренний порт http://web:8000.

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