首页 > 解决方案 > Heroku 使用 docker 一键部署 golang 应用

问题描述

我对 heroku 很陌生,我想通过https://devcenter.heroku.com/articles/heroku-button中所述的“部署到 heroku”按钮,让人们可以轻松地将我的应用程序安装在他们自己的实例上。

我现在app.json在我的开发分支上创建了一个:https ://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-projects的构建过程。但是,由于生成的二进制文件不包含运行应用程序所需的资源,因此应用程序将构建,但在启动时会崩溃。

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

build:
  docker:
    web: Dockerfile

然而,在点击部署的情况下,这个文件似乎被忽略了,而我应该做的是通过app.json. 虽然我用 docker-buildpacks 找到了一些 GitHub 存储库,但我有点不喜欢这个解决方案,因为我必须相信一些随机存储库,它可能随时中断或消失。

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

标签: dockergoherokudeploymentbuildpack

解决方案


看来您必须stack指定app.json. 阅读文档并不太清楚:https ://devcenter.heroku.com/articles/app-json-schema#stack

我已将其设置为:

"stack": "container"

推荐阅读