heroku使用github部署docker镜像

时间:2020-02-10 22:46:29

标签: node.js docker github heroku

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

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

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

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

2 个答案:

答案 0 :(得分: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仓库中运行它:

heroku stack:set container

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

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

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

答案 1 :(得分: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