Docker群集:REST API可以通过端口3001访问,但不能通过networking服务器访问

我有以下设置:

networking:入口(Swarm)服务:web api

Web服务运行在端口3000暴露的容器中,并且api运行在端口3001暴露的容器中。

我可以查询本地主机:3000或IP地址:3000(从任何其他机器),并加载Web应用程序。 此外,我可以POST本地主机:3001或IP地址:3001(从任何其他机器)的API,我会得到所需的响应。

在Web应用程序中,有一个REST端点,它允许我在/ api端点将数据POST到端口3000,该端点将该POST请求redirect到api容器上的3001。

问题是,当我发布数据到3000:/ API,curl只是挂起。 没有反应,也没有什么,我不知道该怎么做。

从文档中可以看出,同一networking中的所有容器都可以访问对方的端口,而不pipe它们是否被公开/公开。

我很困惑,为什么它不工作。 另外,我甚至没有得到一个错误,curl只是不返回一个值。

例:

docker swarm init docker service create --name=web --mode global --publish 3000:3000 project/web docker service create --name=api --replicas 5 --publish 3001:3001 project/api 

现在,如果我从networking上的另一台计算机运行以下命令,它工作正常:

 curl <IP_address>:3000 

从web-app curl返回index.html:3001 / predict –data'{…}'-H“Content-Type:application / json”根据需要返回正确的数据

现在,Web应用程序具有一个端点:3000 / api / predict,它从主体获取json,然后将相同的数据发布到localhost:3001 / predict端点(位于另一个容器上)。

如果我ssh进入容器,curl请求返回连接被拒绝的错误。

我也尝试用一个复制的容器的名称或服务的名称replace“localhost”。

我总是curl:(6)无法parsing主人:海洋