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

Laravel项目部署GCP Cloud Run后无法连接CloudSQL求助

Laravel容器化部署GCP Cloud Run后SQL连接失败解决方案

问题核心

错误SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for mysql failed表明Laravel容器无法解析mysql主机名——这是因为本地Docker Compose的服务名在Cloud Run环境中不生效,必须替换为Cloud SQL的正确连接配置。

排查修复步骤

1. 修正数据库连接配置

Laravel的.env或配置文件中,数据库主机不能再使用mysql,需按以下方式调整:

  • 推荐:使用Cloud SQL Auth Proxy
    设置DB_HOST=127.0.0.1、DB_PORT=3306,Cloud Run关联的SQL连接器会自动在容器内监听3306端口,转发请求到Cloud SQL实例。
  • 测试用:使用公网IP
    直接填写Cloud SQL实例的公网IP,同时确保Cloud SQL的授权网络包含Cloud Run的出站IP(临时测试可设为0.0.0.0/0)。

2. 检查Cloud Run与Cloud SQL关联配置

  • 确认Cloud Run部署时已添加Cloud SQL实例连接,选择正确的实例和数据库类型(MySQL)。
  • 验证VPC网络一致性:Cloud SQL实例与Cloud Run服务需在同一VPC,或通过VPC peering连通(私有网络场景)。

3. 验证容器环境变量与构建配置

  • 检查Dockerfile是否正确传递环境变量,或在Cloud Run部署时手动设置DB_HOST、DB_DATABASE、DB_USERNAME、DB_PASSWORD,避免沿用本地Docker Compose的默认值。
  • 可在容器内执行telnet 127.0.0.1 3306测试连通性,确认Auth Proxy是否正常运行。

4. 检查Cloud SQL实例状态与权限

  • 确认Cloud SQL实例处于运行状态,目标数据库已创建且数据表导入完成。
  • 验证数据库用户权限:确保所用用户拥有目标数据库的读写权限,主机授权设为%(公网场景)或关联Cloud Run服务账号(私有网络场景)。

关键配置示例

修正后的.env(Auth Proxy模式)

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_db_name
DB_USERNAME=your_db_user
DB_PASSWORD=your_db_password

Cloud Run部署要点

  • 部署时必须在Cloud SQL connections中选择目标实例,GCP会自动管理Auth Proxy进程,无需手动启动。
  • 确保Cloud Run服务账号拥有Cloud SQL Client角色权限,否则无法建立连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 21:17:29