Windows10下Docker运行Spring Boot应用报ERR_EMPTY_RESPONSE如何解决?
问题解决方案
步骤1:修复Spring Boot服务绑定配置
这是该场景下最常见的问题原因:
- 打开项目中的
application.properties或application.yml配置文件 - 新增/修改配置:
server.address=0.0.0.0,如果配置值为127.0.0.1会导致服务仅允许容器内部访问,外部无法调用 - 确认
server.port配置值是否为8080,如果已改为其他端口,后续容器启动的端口映射需要和该值对应 - 修改完成后重新执行
mvn clean install打包,再重新构建Docker镜像启动测试
步骤2:确认应用实际启动状态
执行docker logs <容器ID>查看容器运行日志:
- 检查是否存在
Started XxxxApplication in X seconds的Spring Boot启动成功标识,若未出现该日志说明应用启动失败,根据日志中的报错信息(比如数据库连接失败、资源缺失等)排查对应问题 - 确认日志中展示的服务监听端口是否和你配置的一致
步骤3:修正访问规则与端口校验
- 宿主机直接访问
localhost:9999时,先确认宿主机9999端口未被其他程序占用:- Windows系统执行
netstat -ano | findstr 9999 - Linux/Mac系统执行
lsof -i:9999
若端口被占用,启动容器时更换宿主机映射端口即可,比如docker run -p 10000:8080 app
- Windows系统执行
- 直接访问容器IP时需要使用容器内部的服务端口,而非宿主机映射端口:比如你容器内服务端口是8080,应该访问
http://172.17.0.2:8080/getCategoryById/1,而非9999端口
补充说明:Windows/Mac环境下Docker Desktop默认不支持直接ping容器IP,该现象属于正常情况,无需以此作为网络故障的判断依据。
步骤4:排查网络拦截规则
- 若使用Windows/Mac版Docker Desktop,临时关闭本地防火墙测试是否可以正常访问,确认是否是防火墙拦截了Docker的端口映射规则
- 若使用Linux系统,检查iptables规则是否允许Docker网段的流量转发
内容的提问来源于stack exchange,提问作者Sercan Noyan Germiyanoğlu
相关产品推荐
相关产品推荐

