Как иметь разные докерские контейнеры одного и того же сервиса? - PullRequest
0 голосов
/ 04 мая 2018

У меня есть 1 сервис Node.

Я хочу запустить два разных экземпляра одного и того же сервиса в двух разных контейнерах.

Я делаю это с помощью приведенных ниже команд докера,

docker run -p 9003:9003 --network ${NETWORK} --name database-service --restart always -m 1024M --memory-swap -1 -itd ${ORGANISATION}/${SERVICE_NAME}:${VERSION}
docker run -p 9113:9113 --network ${NETWORK} --name database-service-poc --restart always -m 1024M --memory-swap -1 -itd ${ORGANISATION}/${SERVICE_NAME}:${VERSION}

Когда я это делаю, мой первый док-контейнер работает нормально

но второй контейнер каким-то образом берет только 9003, хотя я прохожу 9113, см. Снимок экрана ниже:

enter image description here

FYI,

В службе Node я использую приведенный ниже код для получения динамических портов, т. Е. Порта, который передается с использованием вышеуказанных команд Docker

app.listen(app.get('port'), function () {
  logging.info("Application is running on port: %d in %s mode", app.get('port'), app.get('env'));
  logging.info("process.env.PORT ",process.env.PORT); //In both the docker container it prints 9003
});

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Похоже, что переадресация портов работает отлично, но на вашем изображении вы выставляете только порт 9003. Я ничего не знаю о вещах, которые вы обслуживаете, но вы должны иметь либо EXPOSE 9003, либо EXPOSE 9113 в вашем Dockerfile если ваша служба действительно прослушивает оба этих порта или выполняет переадресацию портов следующим образом:

docker run -p 9003:9003 --network ${NETWORK} --name database-service --restart always -m 1024M --memory-swap -1 -itd ${ORGANISATION}/${SERVICE_NAME}:${VERSION}
docker run -p 9113:9003 --network ${NETWORK} --name database-service-poc --restart always -m 1024M --memory-swap -1 -itd ${ORGANISATION}/${SERVICE_NAME}:${VERSION}

, если это один и тот же сервис на одном и том же порту в обоих контейнерах, и вы просто хотите иметь разные порты для балансировки нагрузки.

0 голосов
/ 04 мая 2018

Проверка роя Docker https://docs.docker.com/engine/swarm/. С помощью роя вы можете запустить сервис с параметром --replicas 2. Ваша служба создаст два контейнера и будет управлять портами и другими пользователями

...