将golang应用程序部署到Heroku时运行迁移

时间:2019-04-06 21:06:49

标签: go heroku migrate go-modules

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

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

我不确定如何完成此操作,当我登录实例时未安装go二进制文件,就像构建包仅执行main函数一样。

我可以使用Heroku CLI命令来完成此操作,但是我找不到在文档中或通过Google来执行此操作的方法。

1 个答案:

答案 0 :(得分:0)

应该定义所有依赖项,以便Heroku可以为您安装它们。对于Go,Heroku支持godepgovendor。如果尚未使用,请选择一个并开始。

您的依赖文件应提交到您的存储库。对于Godep来说是Godeps/Godeps.json,对于govendor来说是vendor/vendor.json。您的依赖项本身应该被提交。

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