我正在使用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
如果有人能指出我正确的方向,将不胜感激。谢谢!
Dockerfile 的末尾指定了 CMD
指令?如果不是,则可能导致问题,然后您可以使用heroku.yml
和heroku stack:set container
来解决该问题。
Heroku在他们的文档中对此不清楚。我能够让我的容器在没有CMD
指令的情况下在本地运行,很可能就像你一样。但是,如果您在这里或这里阅读 Heroku 文档,您会发现 Heroku 理所当然地认为 Dockerfile 将指定要运行CMD
。
我遇到了同样的问题,直到我在 Dockerfile 的末尾添加了 CMD
指令。我仍在工作,尽管我应该将什么作为我的CMD
指令,但我不再收到No command specified for process type web
错误。
由于您切换到使用heroku.yml
因此CMD
您可以使用
run:
web: dotnet Api.dll
Heroku 文档说:"如果您不包含run
部分,Heroku 将使用 Dockerfile 中指定的CMD
。
我在搜索了几个小时后找到了原因。
显然如果忘记打电话 heroku stack:set container
.
现在我可以部署和发布了!