首页 > 解决方案 > 开发时如何在 Kubernetes 上保持 Django 2.2 迁移?

问题描述

我有一个相当复杂的 K8s 环境,其中一个部署是 Django 应用程序。目前,每当我需要更新已经迁移到 PostgreSQL 数据库的模型时,我们都会遇到困难。

例如,假设我创建了一个名为 Sample 的应用程序,它在 models.py 上有一个简单的表。我的开发过程(skaffold)构建了 docker 并在 minikube 上本地应用它,完成后我通过连接到 podkubectl exec并执行python manage.py makemigrationsand python manage.py migrate,到目前为止一切都很好。

一段时间后,假设我需要在示例应用程序的 models.py 文件上创建一个新表,skaffold 构建 docker,杀死旧 pod,并创建新 pod。所以我像往常一样通过连接kubectl exec并尝试执行makemigrationsandmigrate命令,你瞧,没有要应用的迁移。当然,PostgreSQL 没有任何变化。

在进一步搜索后,我认为这是因为 docker 是在没有Sample/migrations文件夹的情况下构建的,并且 PostgreSQL 上已经有一个表(原始表),当我运行makemigrations它时,它只创建0001_initial.py文件,它包含所有表但是,由于表已经存在,当执行migratedjango 时认为迁移已经应用,因此它不会应用。

如果我发现是真的,我怎样才能将这些文件保存在 PVC 上,以便它们始终保存在每个 pod 娱乐之间?

谢谢你。

标签: djangokubernetesmigrationkubernetes-pvc

解决方案


推荐阅读