динамическое / переменное отображение портов - PullRequest
0 голосов
/ 29 августа 2018

У нас есть пара образов Docker, на которых работает сервер Apache2, и мы собираем данные из них с помощью prometheus:

Файл Docker-compose (минимальный):

version: "3.3"

services:
  noteable:
    image: naas/noteable
    ports:
      - 9118:9117

  proxy:
    image: /naas/noteable_proxy
    ports:
      - 80:8080
      - 9117:9117

В этом формате обе службы предоставляют данные Prometheus через порт 9117, который затем сопоставляется с различными портами на хосте.

Если я пытаюсь масштабировать службу noteable, я получаю конфликт портов:

[naas@naas-dev ~]$ docker-compose up --no-recreate --scale noteable=2
Starting naas_proxy_1 ... 
WARNING: The "noteable" service specifies a port on the host. If multiple containers for this service are created on a single host, the port will clash.
Starting naas_noteable_1 ... done
Creating naas_noteable_2 ... error

ERROR: for naas_noteable_2  Cannot start service noteable: driver failed programming external connectivity on endpoint naas_noteable_2 (47ff958b454ce75887ea4a2b8f1b42f8618dc04f3911fa9190fb27129443728a): Bind for 0.0.0.0:9118 failed: port is already allocated

ERROR: for noteable  Cannot start service noteable: driver failed programming external connectivity on endpoint naas_noteable_2 (47ff958b454ce75887ea4a2b8f1b42f8618dc04f3911fa9190fb27129443728a): Bind for 0.0.0.0:9118 failed: port is already allocated
ERROR: Encountered errors while bringing up the project.

(что довольно очевидно, на самом деле)

Вопрос: Есть ли какой-нибудь умный способ сделать 9117+:9117 (т. Е. «Сопоставить с 9117 или следующим доступным портом после этого»)?

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