django - 开发时如何在 Kubernetes 上保持 Django 2.2 迁移?
问题描述
我有一个相当复杂的 K8s 环境,其中一个部署是 Django 应用程序。目前,每当我需要更新已经迁移到 PostgreSQL 数据库的模型时,我们都会遇到困难。
例如,假设我创建了一个名为 Sample 的应用程序,它在 models.py 上有一个简单的表。我的开发过程(skaffold)构建了 docker 并在 minikube 上本地应用它,完成后我通过连接到 podkubectl exec
并执行python manage.py makemigrations
and python manage.py migrate
,到目前为止一切都很好。
一段时间后,假设我需要在示例应用程序的 models.py 文件上创建一个新表,skaffold 构建 docker,杀死旧 pod,并创建新 pod。所以我像往常一样通过连接kubectl exec
并尝试执行makemigrations
andmigrate
命令,你瞧,没有要应用的迁移。当然,PostgreSQL 没有任何变化。
在进一步搜索后,我认为这是因为 docker 是在没有Sample/migrations
文件夹的情况下构建的,并且 PostgreSQL 上已经有一个表(原始表),当我运行makemigrations
它时,它只创建0001_initial.py
文件,它包含所有表但是,由于表已经存在,当执行migrate
django 时认为迁移已经应用,因此它不会应用。
如果我发现是真的,我怎样才能将这些文件保存在 PVC 上,以便它们始终保存在每个 pod 娱乐之间?
谢谢你。
解决方案
推荐阅读
- sql - 如何从表(部门,员工)中获取所有部门的详细信息(部门 ID,名称,部门经理和总雇员)?
- r - 如何在 ShinyApp 的服务器代码中更改 renderDT({}) 中的文本颜色?
- python - python sqlite3 INSERT语句中的语法错误
- ios - UI中显示的单元格数小于数据计数
- xslt - XSL 分组没有给出任何结果
- angular - 角度的D3 js树
- reactjs - 当从组件返回一个 React 元素时,是否只是在顶级标签上调用了一个 React.createElement() ?
- maven - Liquibase - mvn generateChangeLog - diffExcludeObjects 不适用于列
- ios - 在 SwiftUI 的 Picker 中添加新元素
- python - 如何使用正则表达式提取具有版本号的列