Cloud Run Docker容器如何访问VM上的MongoDB数据库?
解决Cloud Run容器连接VM上MongoDB的Connection Refused问题
问题场景
在Google Cloud Run上通过Docker容器运行Python应用,需要连接同一GCP项目内VM实例上部署的MongoDB,但每次尝试连接都会抛出Connection refused错误。
排查过程
最初误以为是容器无法解析外部IP或无法访问公网导致的,但逐步排查后发现,真正的问题是Cloud Run默认无法直接访问VM的内部IP——因为Cloud Run服务默认运行在Google托管的网络中,不属于用户的VPC网络。
解决步骤
创建并配置Serverless VPC Connector即可打通网络:
- 在GCP控制台创建Serverless VPC Connector,确保其与目标VM实例处于同一个VPC网络
- 更新Cloud Run服务的配置,指定使用该Connector,让服务接入用户的VPC网络
- 检查MongoDB配置,确认其监听VM的内部IP(或
0.0.0.0以允许所有接口访问) - 配置VM的防火墙规则,允许来自Serverless VPC Connector所属子网的流量访问MongoDB的默认端口(
27017)
内容的提问来源于stack exchange,提问作者amritashan
相关产品推荐
相关产品推荐

