Docker compose 未经处理的PromisejectionWarning:错误:在docker swarm上运行的nodejs中发现getaddrinfo eNotFind

Docker compose 未经处理的PromisejectionWarning:错误:在docker swarm上运行的nodejs中发现getaddrinfo eNotFind,docker-compose,docker-swarm,portainer,Docker Compose,Docker Swarm,Portainer,正如您可以从docker-compose.yml文件中找到的,该文件位于docker Swarm模式下的Portainer Stack中。容器在Portainer中运行正常,但lamp服务器似乎无法与Redis通信,并引发以下错误: (node:1) UnhandledPromiseRejectionWarning: Error: getaddrinfo ENOTFOUND cache at GetAddrInfoReqWrap.onlookup [as oncomplete] (d

正如您可以从docker-compose.yml文件中找到的,该文件位于docker Swarm模式下的Portainer Stack中。容器在Portainer中运行正常,但lamp服务器似乎无法与Redis通信,并引发以下错误:

(node:1) UnhandledPromiseRejectionWarning: Error: getaddrinfo ENOTFOUND cache
      at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:67:26)
以下是我的配置:


有什么办法解决这个问题吗?

您的服务器服务位于公共网络中,无法看到其他服务。您只需添加一个专用网络即可解决此问题,如:

networks:
  private:
  public:
    external: true
并将其用于其他服务:

services:
  server:
    ...
    networks:
    - private
    - public
  cache:
    ...
    networks:
    - private
  ...

您的服务器服务位于公用网络中,无法看到其他服务。您只需添加一个专用网络即可解决此问题,如:

networks:
  private:
  public:
    external: true
并将其用于其他服务:

services:
  server:
    ...
    networks:
    - private
    - public
  cache:
    ...
    networks:
    - private
  ...

非常感谢你的建议。我尝试进行这些更改,请参见此处,但我仍然收到以下错误(节点:1)未处理PromisejectionWarning:错误:getaddrinfo ENOTFOUND缓存位于GetAddrInfoReqWrap.onlookup[as oncomplete](dns.js:67:26)在完成清理和完全重新启动后是否得到它?您的权利。我将服务器网络设置为私有和公共,现在错误消失了。非常感谢,有没有一个地方可以让我了解有关这些网络的信息,比如docker官方文档?请接受答案。你可以试试katacoda如果你搜索的话,github上有很多我的课程和实验室。祝你好运非常感谢你的建议。我尝试进行这些更改,请参见此处,但我仍然收到以下错误(节点:1)未处理PromisejectionWarning:错误:getaddrinfo ENOTFOUND缓存位于GetAddrInfoReqWrap.onlookup[as oncomplete](dns.js:67:26)在完成清理和完全重新启动后是否得到它?您的权利。我将服务器网络设置为私有和公共,现在错误消失了。非常感谢,有没有一个地方可以让我了解有关这些网络的信息,比如docker官方文档?请接受答案。你可以试试katacoda如果你搜索的话,github上有很多我的课程和实验室。祝你好运