我们正在用django开发一个b2b应用程序。对于每个客户端,我们启动一个新的虚拟服务器机器和一个数据库。因此,每个客户端都有一个单独的应用程序安装。 (我们这样做是因为根据我们的应用程序的性质,一个客户可能需要在特定时间高度使用资源,并且我们不希望一个客户的状态影响其他人)
这些安装中的每一个都绑定到中央存储库。如果我们更新应用程序代码,当我们推送到主分支时,所有安装都会检测到这一点,提取最新版本的代码并重新启动应用程序。
如果我们另一方面更新数据库模式,目前,我们需要通过逐个连接到每个数据库实例来手动运行迁移(settings.py文件从不在repo中的外部文件读取数据库设置,我们在安装时手动添加此文件)。
我们可以自动化这个过程吗?即,如果给出一个数据库列表,是否可以使用一个命令在这些数据库上运行迁移?
答案 0 :(得分:3)
如果我们更新应用程序代码,当我们推送到主分支时, 所有安装检测到这一点,拉出最新版本的代码和 重启应用程序。
我假设您有某种自动化来提取代码并重新启动Web服务器。您只需将迁移添加到此自动化过程即可。每个服务器的settings.py都会从外部文件中读取数据库详细信息并为您运行迁移。
所以流程应该是这样的:
答案 1 :(得分:1)
首先,我真的很(非常努力)找到一种方法来启动一个脚本,就像masnun在客户端建议的那样,真的很难。
其次,如果这不起作用,那么我尝试以下方法:
我没试过这个,但我不明白为什么它不起作用......