node.js - 为什么以 serviceName 作为主机名的两个 nodeJs 服务/容器之间的 API 调用失败?
问题描述
抱歉,我是 Docker 新手,我正在尝试在玩耍时学习基础知识,基本上我在两个 nodeJs 服务之间进行内部 API 调用时遇到了问题。
所以我有两个nodeJs服务器作为服务运行,两个服务的副本,我想要实现的是从浏览器对节点服务器A进行API调用,然后服务器A对节点服务器B进行另一个API调用并发送一个虚拟数据返回服务器 A,服务器 A 将其返回给浏览器。
现在,当我在没有 docker 的情况下运行两个服务器时,上面的工作正常。
节点服务器 A
version: "3"
services:
web:
# replace username/repo:tag with your name and image details
image: nodeone:first
deploy:
replicas: 2
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
ports:
- "4000:3000"
networks:
- nw1
networks:
nw1:
节点服务器 B
version: "3"
services:
web:
# replace username/repo:tag with your name and image details
image: nodetwo:latest
deploy:
replicas: 2
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
ports:
- "4080:3080"
networks:
- nw1
networks:
nw1:
nw1 是一个自定义网络。
我尝试使用以下配置从服务器 A 内部调用服务器 B,但似乎没有任何效果。
- “ http://localhost:4080/nodeACalling ”
- “ http://nodeBServiceName:4080/nodeACalling ”
- “ http://nodeBServiceName:3080/nodeACalling ”
在上述所有情况下,我都遇到了错误
错误:{错误:在 TCPConnectWrap.afterConnect [as oncomplete] (net.js:1174:14) 处连接 ECONNREFUSED 10.0.6.2:4080 错误:'ECONNREFUSED',
解决方案
推荐阅读
- .net - 磁盘写入 5 秒。暂停
- c# - AutoMapper,将一种类型映射到两种不同类型中
- ffmpeg - 我们如何将 1 ffmpeg 处理的输出重定向为同一命令中的输入?
- javascript - 如何根据特定页面有条件地在 Gatsby 中渲染组件?
- amazon-s3 - 将文件从 S3 子文件夹移动到 S3 存储桶根目录
- java - Java Selenium WebDriver Firefox 如何从 getStatus() 获取布尔值?
- git - git 可以忽略 git status 中的某些特定行吗?
- laravel - Laravel/Lumen 自定义多态关系类型
- sql - 如何根据来自不同表的两个日期列获取值?
- macos - 关于 'zsh react-native command not found' 设置路径后