У нас есть пара образов 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 или следующим доступным портом после этого»)?