首页 > 解决方案 > 为什么以 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,但似乎没有任何效果。

在上述所有情况下,我都遇到了错误

错误:{错误:在 TCPConnectWrap.afterConnect [as oncomplete] (net.js:1174:14) 处连接 ECONNREFUSED 10.0.6.2:4080 错误:'ECONNREFUSED',

标签: node.jsdockerdocker-composedocker-machineswarm

解决方案


推荐阅读