如何使用主程序包在子目录中将Go应用程序部署到Heroku?

时间:2014-11-10 10:12:56

标签: heroku go wercker

我目前正在尝试使用wercker将Go应用程序部署到Heroku。 Heroku希望main.go位于存储库根目录下,但如果可能的话,我希望我的存储库目录看起来像这样。

project/
  cmd/
    my-server/
      main.go
  lib1/
  lib2/
  Procfile
  ...

理想情况下,我希望Procfile看起来像这样:

web: my-server -port $PORT

我已阅读this article但由于我使用wercker Go框部署到Heroku,我不确定配置此功能的最佳方法是什么。是否已经成功部署了这样的应用程序?

2 个答案:

答案 0 :(得分:2)

您正在为Go项目使用文件结构,这使您无法使用godep进行构建过程,从而使速度变慢。

鉴于此,您需要创建一个.godir,它指定您的流程所在的模块名称。

使用以下内容创建.godir文件:

project/cmd/my-server

并按原样保存Procfile:

web: my-server -port $PORT

我甚至不需要提到你需要使用Go自定义buildpack:https://github.com/kr/heroku-buildpack-go.git

使用此.godir文件,您将能够推送和部署您的应用程序。

有关godep使用自定义buildpack的更多信息,请查看本指南[1]。

[1] http://mmcgrana.github.io/2012/09/getting-started-with-go-on-heroku.html

答案 1 :(得分:0)

对我有用的是

godep save ./cmd/...

然后将vendor文件夹中的所有内容添加到repo中。