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

Mar*_*cus 3 heroku go wercker

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

project/
  cmd/
    my-server/
      main.go
  lib1/
  lib2/
  Procfile
  ...
Run Code Online (Sandbox Code Playgroud)

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

web: my-server -port $PORT
Run Code Online (Sandbox Code Playgroud)

我已经阅读了这篇文章,但由于我使用 wercker Go box 部署到 Heroku,我不确定什么是配置它的最佳方法。有人成功部署过这样的应用程序吗?

Fer*_* Á. 5

您正在为 Go 项目使用文件结构,这不允许您godep用于构建过程,从而使其速度变慢。

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

创建一个.godir包含以下内容的文件:

project/cmd/my-server
Run Code Online (Sandbox Code Playgroud)

并保持您的 Procfile 原样:

web: my-server -port $PORT
Run Code Online (Sandbox Code Playgroud)

我什至不需要提及您需要使用 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