我正在使用Docker容器部署.Net Core应用程序。
我能够使用heroku container:push web
但是调用heroku container:release web
会返回No command specified for process type web
。
我有点困惑,我尝试添加heroku.yml
setup:
addons:
- plan: heroku-postgresql
as: DATABASE
build:
docker:
web: Dockerfile
config:
ASPNETCORE_ENVIRONMENT: development
run:
web: dotnet Api.dll
在根目录上,但仍然没有运气。
我可以确认图像是在docker中看到的
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.heroku.com/immense-temple-11020/web latest 5cb62a9af317 16 minutes ago 272MB
如果有人能指出我正确的方向,将不胜感激。谢谢!
答案 0 :(得分:1)
在Dockerfile末尾是否指定了CMD
指令?如果不是,那很可能会引起问题,然后您可以使用heroku.yml
和heroku stack:set container
来解决此问题。
Heroku在其文档中对此不清楚。我可以像以前一样,在没有CMD
指令的情况下使容器在本地运行。但是,如果您阅读Heroku文档here或here,您会发现Heroku认为Dockerfile将指定要运行的CMD
是理所当然的。
在我在Dockerfile的末尾添加CMD
指令之前,我遇到了同样的问题。尽管我应该正确地将其作为CMD
指令的内容,但我仍在工作,但我不再遇到No command specified for process type web
错误。
自从您切换为使用heroku.yml
以来,您就可以使用{p> 1
CMD
Heroku docs say“如果不包括run:
web: dotnet Api.dll
部分,Heroku将使用Dockerfile中指定的run
。”
答案 1 :(得分:0)
搜索了几个小时后,我找出了原因。
显然是如果忘记打电话了
heroku stack:set container
。
现在我可以部署和发布了!