【问题标题】:Run migrations when deploying golang application to Heroku将 golang 应用程序部署到 Heroku 时运行迁移
【发布时间】:2019-08-28 10:13:01
【问题描述】:

我一直在尝试为 Heroku 上的 golang 应用程序设置迁移。我正在使用本机 Go 模块 (vgo) 和官方 Heroku 构建包。对于迁移,我使用migrate 包。

问题是,我可以在 main 函数运行时运行迁移,但感觉有点 hacky,这意味着每次应用重新启动时都会运行迁移。我宁愿在部署时只运行架构迁移。

我不知道这是如何实现的,当我登录到实例时,没有安装 go 二进制文件,就像构建包只执行 main 函数一样。

我可以使用 Heroku CLI 命令执行此操作,但我无法在文档中或通过 Google 找到如何执行此操作。

【问题讨论】:

  • 您使用什么工具进行迁移? goose? goose 是否在交互式 heroku run 会话中?
  • 这应该是“goose 在交互式 heroku run 会话中是否可用。”
  • 你说得对,忘了补充。我正在使用 migrate @Chris 。在交互式会话中,我并没有真正的 migrate 命令,但我也没有做任何特别的事情来让它可用,这就是我想知道如何做

标签: go heroku migrate go-modules


【解决方案1】:

您的所有依赖项都应定义为 Heroku 可以为您安装它们。对于 Go,Heroku 支持 godepgovendor。如果您还没有使用其中一个,请选择一个并开始。

您的依赖文件应该提交到您的存储库。对于 godep 是 Godeps/Godeps.json 和对于 govendor 它是 vendor/vendor.json。您的依赖项本身不应被提交。

添加对migrate 的依赖后,它应该可以在Heroku 上使用。您可以通过heroku run bash 运行migrate up 和其他命令。一旦您习惯手动运行迁移,您可能需要考虑将release phase command 添加到您的Procfile,以便在您部署新版本时自动应用迁移。

【讨论】:

    猜你喜欢
    • 2016-10-07
    • 1970-01-01
    • 1970-01-01
    • 2020-10-23
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 2017-10-31
    相关资源
    最近更新 更多