【问题标题】:heroku deploy docker image with githubheroku 使用 github 部署 docker 镜像
【发布时间】:2020-05-26 07:31:57
【问题描述】:

我有一个 nodejs express 应用程序服务于一个站点。我用 Heroku 部署了它,使用 buildpack/nodejs 和 Github。每次我在 Github 上推送时,Heroku 都会检测到推送并运行 npm start 脚本。

问题是我需要传递给包含 nodejs 应用程序的 Docker 映像。我做到了,它在本地工作,我可以用docker run -d -p 8000:8000 exporter 运行它,它工作。

我在根文件夹中添加了 docker.yml 文件并推送到 Github。但是 heroku 仍然运行 package.json 中的 npm 脚本,忽略 docker.yml。

有没有办法让 heroku 在我每次推送到 Github 时从 Dockerfile 创建容器?

【问题讨论】:

标签: node.js docker github heroku


【解决方案1】:

感谢 Taylor Cochran 的回答,我设法解决了这个问题。

我第一次尝试点击这个链接:https://devcenter.heroku.com/articles/container-registry-and-runtime

它有效,但我必须从 cli 中完成。

之后,我删除了整个项目并重新制作了它。我按照 Taylor Cochran 的指示,从 heroku cli 推出。我看到它有效,然后我添加了 github 部署。现在,每次我在 Github 上推送时,Heroku 都会自动构建和部署新的 Docker 容器。

注意:我将 web: docker run -d -p 8000:8000 exporter 更改为 npm start

【讨论】:

  • 您在项目中使用过数据库吗?我找不到将 heroku 配置变量中存在的数据库 url 传递给我的 docker 的方法。
  • 不,我的项目中实际上只需要 mongoexport 工具,因为它只从其他数据库导出数据并对其进行格式化。这是项目github.com/euberdeveloper/eagletrt-telemetria-exporter
  • 我明白了,谢谢你的回复。
  • @Naresh 你可以使用heroku的release阶段
【解决方案2】:

要让 Heroku 了解您的 heroku.yml 文件,您需要做一些事情。 首先,您需要确保Dockerfile 在根目录中。 其次,您需要确保您正在构建和运行 docker 环境。 最后,确保将您的 heroku 堆栈设置为 docker

所以,假设我们要确保目录树看起来像这样:

|-my_app
     |-app_contents
|-Dockerfile
|-heroku.yml
|-etc...

heroku.yml 文件看起来像这样:

build:
   docker:
      web: Dockerfile
run:
   web: docker run -d -p 8000:8000 exporte

最后在你的 heroku repo 中运行它:

heroku stack:set container

然后确保您将更改向上推。

如果这没有帮助。我建议使用以下内容更新您的帖子:

  1. 文件树
  2. Dockerfile
  3. heroku.yml 文件

【讨论】:

    猜你喜欢
    • 2021-02-13
    • 2020-09-09
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    • 2020-08-19
    • 1970-01-01
    相关资源
    最近更新 更多