Heroku 一键部署 golang 应用 docker

Heroku one-click-deploy of golang application with docker

我是 heroku 的新手,我想让人们通过 "Deploy to heroku" 按钮在他们自己的实例上轻松安装我的应用程序,如此处所述 https://devcenter.heroku.com/articles/heroku-button

我现在在我的开发分支上创建了一个 app.jsonhttps://github.com/scribble-rs/scribble.rs/blob/develop/app.json

{
  "name": "Scribble.rs",
  "description": "A multiplayer drawing game for the browser",
  "repository": "https://github.com/scribble-rs/scribble.rs",
  "keywords": ["game", "multiplayer", "ephemeral"]
}

但是,通过调用 https://dashboard.heroku.com/new?template=https%3A%2F%2Fgithub.com%2Fscribble-rs%2Fscribble.rs%2Ftree%2Fdevelop 实际测试按钮将导致 Heroku 运行 为 go 项目启用默认构建过程。但是,由于生成的二进制文件不包含 运行 应用程序所需的资源,应用程序将构建,但在启动时崩溃。

为了解决这个问题,我需要用 docker-buildpack 代替 运行。但是,我真的找不到关于这个特定用例的任何文档,尽管它看起来很笼统。要通过 GitHub 使用应用程序 "Deploy" 选项卡上的 GitHub 连接进行部署,您可以指定 heroku.yml,我这样做了:https://github.com/scribble-rs/scribble.rs/blob/develop/heroku.yml

build:
  docker:
    web: Dockerfile

但是,在单击部署的情况下,这个文件似乎被忽略了,我应该做的是通过 app.json 明确指定一个构建包。虽然我发现了一些 GitHub 带有 docker-buildpacks 的存储库,但我有点不喜欢这个解决方案,因为我不得不相信一些随机的存储库,它们可能会随时损坏或消失。

解决这个问题的最佳方法到底是什么?

看来您必须在 app.json 中指定 stack。通过阅读文档,这不是很清楚:https://devcenter.heroku.com/articles/app-json-schema#stack

我已将其设置为:

"stack": "container"