gpt4 book ai didi

node.js - ECONNREFUSED nodeJS 与 docker 容器内的 express

转载 作者:IT老高 更新时间:2023-10-28 12:46:31 26 4
gpt4 key购买 nike

我正在构建一个在 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,所以需要request模块。每次调用请求时,我都会收到以下错误...

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

我知道可能是因为 localhost 条目,但是我该如何更改呢?

最佳答案

您是否将第三方 api 托管在 localhost 的 docker 容器中?如果是,那么您需要确保第三方 api docker 容器共享相同的网络。见 https://docs.docker.com/engine/userguide/networking/ .我在尝试访问 rest 端点时遇到了同样的问题,我认为它将通过本地主机解决,因为它在容器内的 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 进行通信

关于node.js - ECONNREFUSED nodeJS 与 docker 容器内的 express,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37063822/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com