我一直在到处寻找这个答案。对我来说,这似乎是一个显而易见的问题,然而,答案却让我不知所措。
我现在的设置是,我在同一个网桥网络上有redis、mongodb和两个api服务器。第一个服务器充当一个网关api,它执行所有的auth操作,并公开某些api调用。后端api是处理所有db交互和数据处理的api。如果我只访问后端(内部) api,我就能够看到内容(这个api不会在实际的生产环境中公开)。但是,如果我从网关api中发出相同的请求,我就无法访问后端(内部) api,它也是我创建的桥接网络的一部分。
下面是容器交互的图表。

发布于 2016-12-13 21:35:47
我仍然使用遗留链接,但我对此有点熟悉。我认为问题在于,您正在尝试从网关容器中命中"localhost“。内部API容器不能解析为网关API容器内的"localhost“。由于端口映射,您可以从主机或外部访问"localhost:8099“,但其他容器都无法解析该地址/端口,因为他们认为这是一台远程计算机。
这是一个测试我在想什么的方法。在主机的shell中,运行显示为这里的桥检查命令。从Containers.<inner-api-hash>.IPV4.复制IP地址然后使用docker exec -it <gateway-id> /bin/bash在网关容器中打开一个shell,然后使用curl或wget查看是否可以访问所复制的IP地址。
如果我的想法是正确的,您将看到您必须使用您的内部API节点的Docker从其他容器分配的IP地址。在其他选项中,您可以使用静态IP地址启动容器,如这里所示。
这开始脱离我的知识范围,但您也可以配置容器DNS。配置容器DNS。
https://stackoverflow.com/questions/41130421
复制相似问题