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