我一直在尝试为Heroku上的golang应用程序设置迁移。我正在使用本机Go模块(vgo)和官方的Heroku构建包。对于迁移,我使用的是migrate软件包。
问题是,我可以在运行主要功能时运行迁移,但是感觉有点hacky,这意味着每次应用程序重新启动时都会运行迁移。我宁愿只在部署时运行架构迁移。
我不确定如何完成此操作,当我登录实例时未安装go二进制文件,就像构建包仅执行main函数一样。
我可以使用Heroku CLI命令来完成此操作,但是我找不到在文档中或通过Google来执行此操作的方法。
答案 0 :(得分:0)
应该定义所有依赖项,以便Heroku可以为您安装它们。对于Go,Heroku支持godep和govendor。如果尚未使用,请选择一个并开始。
您的依赖文件应提交到您的存储库。对于Godep来说是Godeps/Godeps.json
,对于govendor来说是vendor/vendor.json
。您的依赖项本身应该不被提交。
添加对migrate
的依赖后,它应该可以在Heroku上使用。您可以通过migrate up
运行heroku run bash
和其他命令。手动运行迁移后,您可能需要考虑在Procfile
上添加release phase command,以便在部署新版本时自动应用迁移。