我有一个服务于站点的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创建容器?
答案 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 :(得分: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