2016-05-06 4 views
5

Я Выстраивание nodejs приложение, которое работает в контейнере Docker ...ECONNREFUSED nodeJS с курьерским внутри контейнера Docker

Это команда, которую я использовал, чтобы запустить контейнер ...

sudo docker run -it --rm -p 3000:6001 --name xxx-running xxx 

Execute выше командной строки, получил следующий вывод ..

Running on Locally 
    AppEnv { 
     isLocal: true, 
     app: {}, 
     services: {}, 
     name: 'xxx', 
     port: 6001, 
     bind: '0.0.0.0', 
     urls: [ 'http://localhost:6001' ], 
     url: 'http://localhost:6001' } 
    App started on port http://localhost:6001 

Поскольку приложение будет вызывать API третьей стороны, поэтому требуется модуль запроса. Каждый раз, когда запрос вызывается, я получил следующее сообщение об ошибке ...

{ [Error: connect ECONNREFUSED 192.155.253.83:443] 
code: 'ECONNREFUSED', 
errno: 'ECONNREFUSED', 
syscall: 'connect', 
address: '192.155.253.83', 
port: 443 } 

Я, может быть, знаете, что это из-за вступления LOCALHOST, но как я могу изменить это?

ответ

1

Вы принимаете сторонний api внутри контейнера докеров на локальном хосте? Если да, то вам нужно убедиться, что сторонний контейнер api docker использует одну и ту же сеть. См. https://docs.docker.com/engine/userguide/networking/. У меня была такая же проблема с попыткой доступа к конечной точке отдыха, которая, как я предполагала, будет разрешена с локальным хостом, поскольку она работает на моем докере внутри контейнера. Ниже приведена последовательность шагов, которые помогли мне решить проблему:

  1. Выполнение docker network ls, чтобы узнать, сколько у вас водителей мостов. В моем случае я имел 2 и контейнеры, используя различные те
  2. Если у вас есть несколько драйверов моста, убедитесь, что Вы начинаете свои контейнеры, которые будут говорить друг с другом, используя же мост СЕТЕВОГО docker run -d -t --network networkname --name containername
  3. Run docker network inspect networkname. Вы увидите подробную информацию о сети со списком контейнеров. У каждого контейнера будет связанный с ним IPv4Address. Используйте значение этих адресов для связи вместо localhost или 127.0.0.1
Смежные вопросы