You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Google Cloud Run部署Django后端时的端口及数据库错误求助

解决Google Cloud Run部署Django后端的三个问题

一、数据库连接失败(错误码2002/115)

  • 修正Cloud SQL授权方式:Cloud Run实例出站IP是动态的,直接添加单个公网IP到Cloud SQL授权列表无法覆盖所有情况。临时测试可在Cloud SQL实例「连接」页面的「授权网络」中添加0.0.0.0/0;生产环境建议使用Cloud SQL Auth Proxy:部署Cloud Run服务时启用「Cloud SQL连接」并选择目标MySQL实例,同时修改Django数据库配置:
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': '你的数据库名',
            'USER': '数据库用户名',
            'PASSWORD': '数据库密码',
            'HOST': '/cloudsql/你的项目ID:区域:实例ID',
            'PORT': '3306',
        }
    }
    
  • 调整迁移命令执行时机:makemigrations需在本地开发环境执行,生成迁移文件后打包进镜像。容器启动时仅执行migrate即可,避免多实例启动时出现迁移冲突,同时减少启动阶段的阻塞风险。

二、端口监听与探针失败问题

  • 改用PORT环境变量配置端口:Cloud Run要求容器监听平台指定的PORT环境变量(即使你手动设置了6000,也需用变量兼容平台规则),修改Dockerfile的CMD指令:
    EXPOSE 6000
    CMD python manage.py migrate && python manage.py runserver 0.0.0.0:$PORT
    
    确保Django监听0.0.0.0(允许外部访问),而非127.0.0.1(仅限容器内部)。
  • 优先解决数据库阻塞问题:数据库连接失败会导致migrate命令卡住,容器无法执行到runserver步骤,自然不会监听端口,最终触发探针失败。需先确保数据库连接正常,再验证端口监听逻辑。

额外排查建议

  • 本地预测试:在本地用Docker运行镜像,设置PORT=6000并配置正确的数据库连接,确认容器能正常启动并响应请求后再上传至Cloud Run。
  • 查看Cloud Run日志:进入服务的「日志」页面,查看启动阶段的详细输出,确认是卡在migrate还是runserver环节,精准定位问题。

内容的提问来源于stack exchange,提问作者noodles888

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 23:11:02