You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过Docker部署到Heroku的Web应用无法访问,报错H10如何解决?

问题修复方案

Heroku返回H10错误说明你的Web进程启动后直接崩溃,没有成功监听平台分配的端口,可按以下步骤排查修复:

1. 修正CMD指令确保环境变量正确解析

你当前Dockerfile的CMD为shell形式,exec形式下无法直接解析变量,且需要通过bash加载运行时注入的PORT变量,将CMD修改为:

CMD ["bash", "-c", "uvicorn main:app --host 0.0.0.0 --port ${PORT} --log-level trace --use-colors"]

该写法会触发bash解析${PORT}变量,正确读取Heroku动态分配的端口。

2. 修正代码拷贝路径错误

从Dockerfile的ADD ./webapp/requirements.txt /tmp/requirements.txt可知,你本地项目的应用代码存放在根目录下的webapp子文件夹中,但你后续的ADD ./ /webapp/会将整个项目根目录(包含webapp子文件夹)拷贝到镜像内的/webapp路径下,最终你的main.py实际路径为/webapp/webapp/main.py,uvicorn启动时找不到对应文件直接崩溃。
可修改代码拷贝逻辑:

# 把原有的ADD ./ /webapp/替换为下面这条,只拷贝应用代码到工作目录
ADD ./webapp /webapp/

3. 本地贴近Heroku环境验证

修改完成后不要用docker-compose固定端口测试,直接用docker命令模拟Heroku的运行逻辑,确认应用可正常启动:

docker build -t test-heroku-app .
docker run -e PORT=8000 -p 8000:8000 test-heroku-app

访问本地127.0.0.1:8000确认返回正常内容后再重新部署到Heroku即可。

4. 可选:查看详细启动日志

如果修改后仍报错,可通过Heroku CLI查看进程的详细启动日志定位问题:

heroku logs --dyno web --tail

内容的提问来源于stack exchange,提问作者Takehiko Esaka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 05:06:01