ECONNREFUSED nodeJS与docker集装箱内的快递

我正在构build一个在Docker容器中运行的nodejs应用程序。

这是我用来运行容器的命令…

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

执行上面的命令行,得到如下输出

  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 } 

我知道也许这是因为本地主机条目,但我怎么能改变这个?

你是否托pipe你的第三方API在本地主机上的docker容器? 如果是,那么你需要确保第三方APIdocker容器共享相同的networking。 请参阅https://docs.docker.com/engine/userguide/networking/ 。 我有同样的问题,试图访问rest端点,我认为将解决本地主机,因为它是在我的docker上的容器内运行。 以下是帮助我解决问题的一系列步骤:

  1. 执行docker network ls来查看您有多less个网桥驱动程序。 在我的情况下,我有2和使用不同的容器
  2. 如果您有多个网桥驱动程序,请确保您启动的容器将使用相同的桥networkingdocker run -d -t --network networkname --name containername
  3. 运行docker network inspect networkname 。 您将使用容器列表查看networking的详细信息。 每个容器将有IPv4Address关联。 使用这些地址的值来代替localhost或127.0.0.1进行通信