Spring Boot Docker微服务运行无报错 访问localhost:8080报ERR_CONNECTION_REFUSED
问题排查方案
- 第一步:确认Docker端口映射配置正确
绝大多数连接拒绝问题都是启动容器时未配置端口映射导致,执行docker ps查看容器PORTS列,确认是否存在0.0.0.0:8080->8080/tcp的映射规则。如果没有,停止原有容器后,重新执行启动命令,添加端口映射参数-p 8080:8080即可。 - 第二步:验证容器内部服务可用性
执行docker exec -it 你的容器名/容器ID bash进入容器内部,执行curl localhost:8080/hello验证服务是否正常响应。如果容器内部可以访问,说明问题出在宿主机到容器的网络连通性;如果容器内部也访问失败,继续往下排查。 - 第三步:排查Spring Boot服务启动异常
你的配置中开启了Spring Cloud Config的bootstrap启动模式,且配置的Config服务地址http://configs:20101在容器默认网络下无法解析,会导致配置拉取失败、服务无法正常启动。你可以先注释掉application配置文件中所有spring.cloud.config开头的配置项,重新打包构建镜像后再测试,确认是否是配置拉取失败导致服务未正常启动。
另外可查看容器完整启动日志,确认是否存在Tomcat started on port(s): 8080 (http)的日志,没有该日志说明服务未完成启动。 - 第四步:处理后续视图返回问题
你当前/hello接口返回的是视图名index,项目中未引入thymeleaf等模板引擎依赖的情况下,服务连通后会返回404错误,可后续调整接口直接返回字符串即可完成可用性验证。
内容的提问来源于stack exchange,提问作者krysznys
相关产品推荐
相关产品推荐

