首页 > 解决方案 > 为什么我的 Docker 容器仍在尝试连接到 Flask 微服务中的 localhost MongoDB?

问题描述

我有两个 Docker 容器在同一个桥接网络(docker0)上运行。

我正在本地机器上的 Postman 中进行测试,以将数据发送到这个“usercreate”容器,该容器将写入 MongoDB 容器。

运行我的容器时,usercreate端口转发为 5000:5000,mongodb为 27017:27017(用于测试目的。)

所有场景均使用 Postman 执行

---------场景1:

我已经为 mongodb 容器名称、端口、没有端口和只有容器 IP 尝试了所有 MONGO_URI 配置。

app.config["MONGO_URI"] = "mongodb://mongodb:27017/User"
app.config["MONGO_URI"] = "mongodb://mongodb/User"
app.config["MONGO_URI"] = "mongodb://172.18.0.2:27017/User"
app.config["MONGO_URI"] = "mongodb://172.18.0.2/User"

---------场景2:

我在端口 5001 上的本地主机上运行了这个 usercreate flask 应用程序(因为 usercreate 容器正在使用 5000)

一切正常!

---------场景3:

当在“主机”网络而不是网桥上运行容器时,usercreate 容器也能正常工作。


我认为原因是因为我的usercreate容器试图在其中找到 Mongo 数据库,localhost:27017而不是根据Scenario1mongodb:27017中的错误(也如下所示)

 `pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 111] Connection refused`

如何让usercreate容器使用(容器名称):27017 MONGO_URI 而不是 localhost:27017?它似乎在我的 Flask 配置中忽略了我的 MONGO_URI。

这个错误还有其他原因吗?

标签: mongodbdockerflask

解决方案


推荐阅读