【发布时间】:2022-01-27 07:51:15
【问题描述】:
我正在使用 GCP Cloud build 服务部署 django 应用程序。在cloudbuild.yaml 中,我定义了使用gcr.io/google-appengine/exec-wrapper 工具应用迁移的步骤:
- id: "apply migrations"
name: "gcr.io/google-appengine/exec-wrapper"
args:
[
"-i",
"gcr.io/$PROJECT_ID/${_SERVICE_NAME}",
"-s",
"${PROJECT_ID}:${_REGION}:${_DB_INSTANCE_NAME}",
"-e",
"GOOGLE_CLOUD_SECRETS_NAME=${_GOOGLE_CLOUD_SECRETS_NAME}",
"-e",
"DJANGO_SETTINGS_MODULE=${_DJANGO_SETTINGS_MODULE}",
"--",
"python",
"manage.py",
"migrate",
]
使用一个"default" 数据库一切正常。
那么:
DATABASES = {
"default": env.db("DATABASE_URL"),
"replica": env.db("REPLICA_DATABASE_URL"),
}
当我添加名为gcp-replica-2015-07-08-1508 的新mysql replica 数据库时,Cloud build 服务启动失败并出现错误:
django.db.utils.OperationalError:
(2002, "Can't connect to local MySQL server through socket
'/cloudsql/myproject-228819:us-central1:gcp-replica-2015-07-08-'
我通过在Cloud build 中打印DATABASES 变量来检查我的数据库配置,并且配置具有正确的数据,但是如果您查看错误,您会注意到错误返回时会在末尾带有剪切字符串!没有-1508
如果我跳过此步骤并将具有相同配置的应用程序部署到 Cloud Run 一切正常。
服务帐号具有以下角色:
复制DB Version MySQL 5.7
【问题讨论】:
标签: mysql django google-cloud-platform google-cloud-build