【问题标题】:How to run a migration on Google App Engine如何在 Google App Engine 上运行迁移
【发布时间】:2019-05-18 07:16:04
【问题描述】:

我有一个在 Google App Engine 上运行的 Node.js 应用。

我想运行 sequelize 迁移。

是否可以从我的 node.js 应用程序的实例中运行命令?

基本上类似于 heroko 的 run 命令,它将在 Heroku dyno 中运行一次性进程

如果这不可能,那么运行迁移的最佳做法是什么?

我总是可以将它添加到gcp-build,但这将在每次部署时运行。

【问题讨论】:

    标签: node.js google-app-engine sequelize.js


    【解决方案1】:

    不可能在 GAE 中运行独立的脚本/应用程序,请参阅 How do I run custom python script in Google App engine(在 python 上下文中,但总体思路适用于所有运行时)。

    我运行(数据存储)迁移的方式是将迁移脚本本身的功能移植到我的 GAE 应用程序中受管理员保护的处理程序的主体中,我通过对特定 URL 的 HTTP 请求触发了该处理程序。我对其进行了重新设计,将可能长时间运行的迁移操作拆分为一系列较小的操作(使用推送任务队列),对 GAE 更加友好。这使我能够一次对迁移一个数据存储实体集进行现场测试,并且仅在对其操作完全有信心时才进行多个集。也不必担心最终的一致性(我使用查询来确定要迁移的实体)——我只是反复调用迁移,直到无事可做。

    迁移完成后,我删除了相应的代码(但保留了处理程序本身以供将来迁移使用)。作为一个积极的副作用,我几乎在我的存储库的历史记录中捕获了迁移历史记录。

    可能感兴趣:Handling Schema Migrations in App Engine

    【讨论】:

    • 这很奇怪。我以为这很容易。我什至考虑过在gcp-build 中运行migrate 命令,但由于它使用的是Docker 容器,因此它没有正确的环境变量来执行。 ☹️
    猜你喜欢
    • 2016-05-25
    • 2017-05-17
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多