Doctrine Migrations Bundle - 如何在多个服务器上同时运行迁移?

时间:2017-06-12 16:25:21

标签: symfony doctrine-orm doctrine doctrine-migrations

目前可能无法实现,但如果有人遇到同样的问题,您是如何处理的?

是否可以同时在多台服务器上运行迁移,而无需多次运行相同的脚本?

我遇到的问题是我们使用多台服务器,并且每次部署新版本的APP时都会运行迁移。这会导致相同的迁移脚本多次运行(取决于运行它的服务器数量)。

有没有办法检查迁移是否正在进行中,如果是,请跳过它,或者这是我需要手动实现的内容?

非常感谢。

2 个答案:

答案 0 :(得分:0)

This sounds like something you would need to implement manually.

I suggest having a script that executes once when you deploy your app that SSH into one of your servers and executes the migration.

答案 1 :(得分:0)

我建议使用Ansible编写一个剧本来处理这个问题,同时调用所有相关的Hosts(库存)。

最终结果将是(例如):

如果你只想在单个(或......的子集列表)上运行:

ansible-playbook --limit YOUR_INVENTORY_NAME run-migrations.yml

或者,对于他们所定义的所有人:

ansible-playbook run-migrations.yml

你在Ansible中的实际剧本看起来像是:

- name: Run Migrations
  command: php bin/console doctrine:migrations:migrate
  args:
    chdir: /path/to/symfony