使用Jib插件构建Docker镜像:本地运行容器后无法访问REST端点
问题分析与解决方案
你的问题核心是端口映射不匹配,具体原因和解决方法如下:
问题根源
Spring Boot Web应用默认监听8080端口,但你执行docker run命令时,把主机的8080端口映射到了容器的80端口:
docker run --name localJibExample123 -d -p 8080:80 bc2cbf3b85d1
容器内的应用实际在8080端口运行,主机的请求无法通过80端口到达应用,导致访问失败。
解决方法
方法1:修正端口映射命令
直接修改docker run的端口映射规则,将主机8080端口映射到容器的8080端口:
docker run --name localJibExample123 -d -p 8080:8080 bc2cbf3b85d1
修改后重新启动容器,即可正常访问http://localhost:8080/hello。
方法2:配置应用在容器内监听80端口
如果希望保持当前的端口映射规则(8080:80),可以修改Spring Boot应用的配置,让它在容器内监听80端口:
- 在项目的
src/main/resources/application.properties中添加配置:server.port=80 - 重新用Jib构建镜像并推送、拉取
- 再次执行原来的
docker run命令即可访问
验证步骤
可以通过查看容器日志确认应用实际监听的端口:
docker logs localJibExample123
如果看到类似Tomcat started on port(s): 8080 (http)的日志,就说明应用确实在容器内的8080端口运行,此时需要用方法1修正映射。
内容的提问来源于stack exchange,提问作者java12399900
相关产品推荐
相关产品推荐

