在Heroku Scheduler中执行Heroku CLI命令失败问题咨询
解决Heroku Scheduler无法运行.NET容器控制台应用的问题
核心问题:Scheduler不支持Heroku CLI命令
你之前在Scheduler里填的heroku run bash --type=worker --app serene-mountain-60523是本地Heroku CLI的调用命令,而Heroku Scheduler的任务是直接在应用的dyno环境中执行命令,不需要通过CLI跳转,所以这类命令完全无效。
正确的任务配置步骤
直接填写应用启动命令
因为你部署的是.NET控制台应用容器,直接在Scheduler的命令框中填写应用的启动命令即可。比如你的应用编译后入口程序是MyConsoleApp.dll,命令就是:dotnet MyConsoleApp.dll如果你的Dockerfile已经通过
CMD或ENTRYPOINT指定了默认启动命令,也可以直接用该命令(比如你的默认启动命令是./MyConsoleApp,就填这个)。指定Worker dyno类型
在Scheduler的任务设置界面,找到Dyno Size旁边的类型选择项,把默认的Web改成Worker——这一步很关键,因为你的应用是Worker类型,Web dyno可能无法正确加载你的容器配置。提前验证命令有效性
先通过本地CLI进入Worker dyno,确认命令能正常运行:heroku run bash --type=worker --app serene-mountain-60523进入后直接执行你要放到Scheduler里的启动命令,比如
dotnet MyConsoleApp.dll,确保应用能正常执行、读取到config vars里的认证密钥。设置运行时间并保存
配置好命令和dyno类型后,选择每日运行的时间,保存任务即可。
额外注意事项
- Scheduler启动的临时dyno会自动继承应用的所有config vars,不需要额外配置环境变量。
- 如果任务执行失败,可以通过Heroku的日志(
heroku logs --app serene-mountain-60523 --tail)查看具体错误信息,排查命令是否有误或应用是否有运行异常。
内容的提问来源于stack exchange,提问作者Dhanik Lal Sahni
相关产品推荐
相关产品推荐

