如何使用 CI/CD 和 Google CloudSQL 迁移 django 中的数据库?

Sak*_*tel 4 django continuous-integration continuous-deployment google-cloud-sql gcloud

我在 gitlab 中有一个 django 存储库设置,我正在尝试使用 gitlab CI/CD 在谷歌云上自动构建和部署。

该应用程序必须部署在 App Engine 上,并且必须使用 CloudSQL 进行动态数据存储。

我面临的问题是在部署应用程序之前在数据库上执行迁移时。

我应该运行./manage.py migrate它连接到cloudSQL。

我读到我们可以使用云代理连接到cloudSQL并迁移数据库。但这有点像黑客。有没有办法通过 CI/CD 管道脚本迁移我的数据库?

任何帮助表示赞赏。谢谢。

小智 5

在 App Engine 标准环境中运行 Django 时,建议的./manage.py migrate数据库迁移方法是直接从控制台 shell 或本地计算机运行(这需要使用云 sql 代理)。

如果您希望数据库迁移与应用程序部署分离并在 Gitlab CI/CD 中运行它,您可以执行以下操作:

  • 用作基础图像google/cloud-sdk:latest
  • 获取凭证gcloud auth activate-service-account --key-file $GOOGLE_SERVICE_ACCOUNT_FILE
  • 下载 cloudsqlproxy 并wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy使其可执行chmod +x cloud_sql_proxy。
  • 启动代理./cloud_sql_proxy -instances="[YOUR_INSTANCE_CONNECTION_NAME]"=tcp:3306。
  • 最后,运行迁移脚本。

您还可以创建一个自定义的 docker 映像,该映像已经在幕后执行上述操作,结果是相同的。

如果您想进一步了解此事,我建议您查看以下文章link1 link2。