gpt4 book ai didi

docker - 单独容器中应用之间的Docker通信

转载 作者:行者123 更新时间:2023-12-02 18:41:03 25 4
gpt4 key购买 nike

我一直在到处寻找这个答案。对我来说,这似乎是一个显而易见的问题,但是答案一直困扰着我。

我当前的设置是,我在同一网桥网络上有redis,mongodb和两个api服务器。第一台服务器充当执行所有身份验证的网关api,并公开某些api调用。后端api是处理所有数据库交互和数据处理的API。如果仅点击后端(内部)API,就可以看到内容(在实际生产环境中不会公开此api)。但是,如果我从网关api发出相同的请求,则无法访问后端(内部)api,该api也是我创建的桥接网络的一部分。

下面是容器交互的示意图。

Docker container interaction

最佳答案

我仍然使用旧版链接,但对此我有点熟悉。我认为问题在于您正试图从网关容器内部命中“localhost”。内部API容器无法在网关API容器内部解析为“localhost”。由于端口映射,您可以从主机或从外部访问“localhost:8099”,但是其他任何容器都无法解析该地址/端口,因为它们“认为”这是一台远程计算机。

这是一种测试我在想什么的方法。在主机的 shell 程序中,运行显示于here的bridge inspect命令。从Containers复制IP地址。 <inner-api-hash>IPV4。然后,使用docker exec -it <gateway-id> /bin/bash在网关容器中打开一个 shell ,然后使用curlwget来查看是否可以访问您复制的IP地址。

如果我的想法是正确的,您将看到必须使用其他容器中的内部API节点的Docker分配的IP地址。在其他选项中,您可以使用静态IP地址启动容器,如here所示。

这开始逃脱了我的知识范围,但是您也可以配置容器DNS。 Configure container DNS

关于docker - 单独容器中应用之间的Docker通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41130421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com