mongodb - 为什么我的 Docker 容器仍在尝试连接到 Flask 微服务中的 localhost MongoDB?
问题描述
我有两个 Docker 容器在同一个桥接网络(docker0)上运行。
- mongodb - 带有我的数据库的 MongoDB 容器
- usercreate - 在烧瓶上运行的 Create_User API 并将用户插入到 MongoDB 容器中。
我正在本地机器上的 Postman 中进行测试,以将数据发送到这个“usercreate”容器,该容器将写入 MongoDB 容器。
运行我的容器时,usercreate端口转发为 5000:5000,mongodb为 27017:27017(用于测试目的。)
所有场景均使用 Postman 执行。
---------场景1:
本地主机:5000/createuser
pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 111] Connection refused
我已经为 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)
localhost:5001/createuser
一切正常!
---------场景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。
这个错误还有其他原因吗?
解决方案
推荐阅读
- android - 何时使用 JobIntentService 与 WorkManager?
- excel - Excel:在 1 行中重复,在另一行中是唯一的。每当重复项中存在给定的唯一值时,在另一行中标记
- python - 使用 SAT 求解器 (Python) 查找特定区域内的所有自由多骨牌组合
- python - 如何正确解析 XML 属性并使用 Python 追加到列表中?
- woocommerce - 使连锁产品适用于以编程方式添加的订单
- javascript - 如何使用 Selenium Python (MacOS) 用自定义文本替换按钮文本?
- r - R 中的 cv.glmnet 是否接受二元因子特征?
- javascript - 函数正在返回 [object Object]
- ruby-on-rails - 如何检查控制器参数中的空值?(Ruby on Rails 5)- 已修复
- mysql - 如何在SQL中压缩一行重复的数量,并统计另一行的属性?