部署在Heroku Docker中的.NET应用无法访问问题求助
解决Heroku Docker部署.NET应用的R10启动超时问题
核心问题分析
日志里的关键错误是:
Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
你的应用成功启动并监听了5000端口,但Heroku要求Web进程必须绑定到平台动态分配的$PORT环境变量,而非硬编码的固定端口。你手动设置PORT=5000无效的原因是启动命令里直接指定了5000,没有读取环境变量。
修复步骤
修改启动命令,使用Heroku动态端口
将启动命令中的硬编码端口替换为$PORT,例如:dotnet ./Muapp.dll --urls=http://*:$PORT如果使用Dockerfile,确保CMD/ENTRYPOINT配置正确读取环境变量:
# Shell形式 CMD dotnet ./Muapp.dll --urls=http://*:$PORT # Exec形式(推荐) CMD ["dotnet", "./Muapp.dll", "--urls", "http://*:$PORT"]移除手动设置的PORT变量
Heroku会自动分配端口,无需手动指定PORT=5000,删除该自定义变量可避免干扰平台的动态分配逻辑。验证部署结果
重新部署后,查看日志应显示应用监听Heroku分配的随机端口(而非固定5000),此时R10超时错误会消失,应用可正常访问。
次要警告说明
日志中的DataProtection相关警告不影响应用启动,仅提示密钥存储在容器内部,容器销毁后加密数据会失效。后续可通过配置外部密钥存储解决,但当前优先解决启动超时的核心问题。
内容的提问来源于stack exchange,提问作者Ajesh
相关产品推荐
相关产品推荐

