代码之家  ›  专栏  ›  技术社区  ›  David West

部署在Kubernetes群集上的Rails Docker映像。在每个Dockerfile构建上安全运行rake:db:migrate?

  •  0
  • David West  · 技术社区  · 7 年前

    我在试着决定把 rake db:migrate 在我们的部署中。我目前在Dockerfile中有它。

    我们现在的基本设置是。

    开发人员在Rails应用程序上工作->推式回购->生成/扫描/将图像推送到Docker注册表->部署到K8s群集。

    当前在此工作流中,每次构建时都会执行 rake db:迁移 .

    这合理吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   grizzthedj dusa bhargava    7 年前

    我认为,如果对kubernetes部署使用RollingUpdate策略,这是合理的。

    如果您甚至正在运行rails应用程序的多个副本,您应该可以。

    例如,如果您正在运行5个副本,并使用RollingUpdate,则当您部署rails应用程序的新映像时,所有5个副本部署都将运行rake db:migrate,但只有第一次运行才会实际应用迁移。其他的跑步都没用。

    只要使用RollingUpdate,就可以在副本部署之间留出一些时间,这样就不会遇到数据库锁定等问题,您可能会同时部署所有副本。