[英]Django migrations for docker container
我一直在尝试解决我目前遇到的问题,但我在这里或其他地方都没有找到任何适当的解决方案,所以我希望这里的人可能有答案。 我已经到了一个我知道问题是什么但不知道如何解决它的地步。
基本上我有一个运行 django/postgres/nginx 的网站,它运行平稳,我可以制作新模型并迁移它们,但如果我尝试向 model 添加一个字段:
from django.db import models
class project(models.Model):
project_name = models.CharField(max_length=50)
author = models.CharField(max_length=30, blank=True, null=True)
date_created = models.DateField()
#Added in second round of migrations
#Description = models.CharField(max_length=150,blank=True, null=True)
我通常会做的是最初构建并启动我的容器
sudo docker-compose -f docker-compose.yml up --build
在我的入口点文件中,我运行 makemigrations 并进行迁移。
第一轮它运行良好,但如果我将描述字段添加到我的 model,旋转并重建容器以允许新字段包含在我的容器中,新容器的构建没有初始迁移,并且不是新的迁移。 这导致任何以前的 postgres 表都没有添加新字段,并且当我尝试请求数据时出现服务器错误 500,因为以前的表现在没有预期的列。
因此,我的问题是您通常如何管理容器化 django 应用程序的模型以确保您维护所有迁移? 或者还有其他我不知道的解决方案吗?
这可能是一个愚蠢的问题,但我对此很陌生,希望您能提供任何帮助。
migrate
操作很危险,您永远不应该自动执行此操作。docker exec
在容器中运行命令。 makemigrations
应该在开发阶段完成,并将迁移文件(000x 前缀文件)添加到源代码管理。
然后,经过几次修改,你应该有类似的东西:
0001_first_round_change.py
0002_second_round_change_for_description.py
......
每次 docker 容器启动时,迁移这些文件,在Django 命令中可以看到一个有用的过程:makemigrations 或 migrate?
而且, 这是一个开源项目示例,他们使用相同的方法进行迁移,仅供参考。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.