带有快速内部docker容器的ECONNREFUSED nodeJS

Yin*_*ang 12 request node.js docker

我正在构建一个在docker容器中运行的nodejs应用程序...

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

sudo docker run -it --rm -p 3000:6001 --name xxx-running xxx
Run Code Online (Sandbox Code Playgroud)

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

    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
Run Code Online (Sandbox Code Playgroud)

由于应用程序将调用第三方api,因此需要请求模块.每次调用请求时,我都会收到以下错误...

{ [Error: connect ECONNREFUSED 192.155.253.83:443]
 code: 'ECONNREFUSED',
 errno: 'ECONNREFUSED',
 syscall: 'connect',
 address: '192.155.253.83',
 port: 443 }
Run Code Online (Sandbox Code Playgroud)

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

Geo*_*nov 8

您是否在localhost上的docker容器中托管第三方api?如果是,那么您需要确保第三方api docker容器共享同一网络.请参阅https://docs.docker.com/engine/userguide/networking/.我有同样的问题试图访问休息端点,我假设将与本地主机解决,因为它在我的容器内的docker上运行.以下是帮助我解决问题的一系列步骤:

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