keter 上的 Yesod 应用程序,具有对数据库的只读访问权限

Yesod app on keter with read-only access to DB

我使用 keter 和 PostgreSQL 部署了几个 yesod 应用程序。我真正喜欢它们的一点是部署时发生的自动数据库迁移。

但是,现在我遇到了一个小问题:我在另一个虚拟机上设置了数据库副本;第二个数据库是从数据库,因此是只读的。当我在部署应用程序的情况下启动 keter 时,应用程序无法启动,因为它们无法成功执行迁移脚本。只有虚拟更改,table 没有真正的更改,但应用程序无法启动 "cannot execute ALTER TABLE in a read-only transaction".

是否可以通过 keter 或应用程序配置或 ENV 变量在启动时临时禁用迁移脚本?

Is it possible to temporarily disable migration scripts at startup via keter or app configs or ENV variables?

是的,这是可能的。在我看来,最简单的方法是使用环境变量。 如果您使用的是 yesod 的脚手架站点,则必须在运行迁移的 makeFoundation 函数中进行更改。请注意名为 runMigration 的函数用于执行它。您需要添加适当的条件才能使其生效。