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主人:海洋