在容器化部署中管理django模式/数据迁移的最佳实践是什么?在部署和并行运行迁移时,我们遇到了多个容器试图运行迁移命令的问题。我惊讶地获悉django没有在内部协调这一点,以防止迁移同时由两个容器运行。我们正在使用AWS ECS,并且难以自动识别一个容器作为运行迁移的主节点。
发布于 2022-10-06 20:06:47
我在过去遇到过这个问题,而且我也惊讶地发现Django没有像其他DB迁移工具那样使用数据库锁来管理这个问题。
我的解决方案(受Terraform的状态锁定机制的启发)是创建一个用于分布式锁的DynamoDB表。我使用boto3对锁表执行写操作,使用锁不存在的ConditionExpression (如果锁确实存在,则使用while循环等待),然后调用Django迁移命令,然后删除锁。
我将这个逻辑绑定到Django管理命令中,我部署到ECS的坞映像中的启动脚本在启动Django应用程序之前运行这个命令。
https://stackoverflow.com/questions/73978812
复制相似问题