在Google Run的Docker容器中运行Flask应用无法连接MongoDB Atlas
解决Google Run上Flask应用连接MongoDB Atlas超时问题
一、优先排查连接串配置错误(核心问题)
你的错误信息明确显示尝试连接localhost:27017,但你声明使用的是MongoDB Atlas的srv连接串,这说明应用代码里没有正确加载Atlas的连接地址:
- 检查代码中MongoDB连接逻辑,确保没有硬编码
mongodb://localhost:27017这类本地连接地址 - 确认连接串从环境变量读取(推荐方式),而非写死在代码里:
import os from pymongo import MongoClient mongo_uri = os.getenv("MONGO_URI") client = MongoClient(mongo_uri) - 验证Google Run服务的环境变量是否正确配置了
MONGO_URI,值为你的mongodb+srv://<user>:<password>@<cluster>.<domain>.mongodb.net/?retryWrites=true&w=majority
二、Google Run出站网络配置确认
如果确认连接串配置正确,再检查Google Run的网络设置:
- Google Run默认允许出站访问公网,MongoDB Atlas的端口(27017及TLS加密端口)是开放的,无需额外VPC配置(你已设置
0.0.0.0白名单,说明是公网访问场景) - 你的Dockerfile未添加防火墙限制,容器内出站流量无额外阻碍
- 确认Atlas白名单规则已生效:检查
0.0.0.0/0规则是否保存并同步到集群
三、额外排查步骤
- 本地验证连接串有效性:用相同的连接串直接在本地测试连接Atlas,确认能正常访问
- 查看Google Run日志:在Google Cloud Console的Run服务详情页,检查应用日志,确认连接时使用的URI是否正确
- 确认依赖版本:确保
pymongo版本≥3.6,且requirements.txt中添加了dnspython>=2.0.0(支持srv连接解析)
内容的提问来源于stack exchange,提问作者AynonT
相关产品推荐
相关产品推荐

