使用 ECS Fargate 运行数据库迁移的建议部署策略是什么?
我可以在启动 Gunicorn 服务器之前更新容器命令以运行迁移。但如果配置了多个实例,这可能会导致并发迁移同时执行。
我还必须考虑图像已经在运行的事实。如果我弄清楚如何在新映像启动并运行之前运行迁移,我必须考虑这样一个事实:旧映像仍在旧代码上运行,并且可能会破坏或导致奇怪的数据损坏副作用。
我正在考虑创建一个新的 ECS::TaskDefinition。让其运行一个运行迁移的一次性迁移脚本。然后容器关闭。我更新了所有其他 TaskDefinitions 以使其具有 DependsOn,这样它们在完成之前不会启动。