node.js - docker Express 服务器之间的连接被拒绝

标签 node.js docker express docker-compose microservices

我正在尝试在运行 Express 服务器的两个 docker 容器之间建立连接。在本例中,我想在用户管理服务器内的任务服务器中使用路由。我实现了express-http-proxy在用户管理服务器中如下所示:

app.use('/api/tasks', proxy('http://tasks-service:5002/api/tasks'));

但是,当我进行 api 调用时,出现错误

{
  "err":"connect ECONNREFUSED 172.21.0.6:5002"
}

我已经在两台服务器上安装了 cors,并使用 docker-compose 将它们连接到同一网络中(如下)

docker-compose .

什么原因导致错误?我该如何解决?

最佳答案

简单的错误

docker-compose.yml

tasks-service:
  ...
  ports:
    - "5002:3000" # <-- wrong
    - "3000:5002" # <-- right, "<hostPort>:<containerPort>"
  ...

通过执行此操作,您的代理应该可以连接

关于node.js - docker Express 服务器之间的连接被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60420788/

相关文章:

node.js - 无法通过Google电子表格API( Node JS)中的服务帐户访问写入

express - 为什么我的所有 Firebase 云功能都超时?

node.js - Mongoose 文档中有错误吗?模型 save() numberAffected 1 用于更新而不是创建?

javascript - 在特定情况下向 PHP 开发人员解释 nodejs 开发风格

python - Docker容器网络偶尔失败

mysql - 应用程序和 MySQL Docker 容器通过 docker-compose 连接在一起。如何从我的应用程序使用 JDBC url 连接到 MySQL 容器数据库?

docker - docker ps -a是什么意思

javascript - 返回 null mysql nodejs

javascript - 如何将数据从backbone.js的客户端传递到服务器。 Express + Backbone.js

javascript - NodeJs:fs.appendFileSync在数据参数 Node v14中不接受数字类型