使用项目中springboot jar包和docker file构建镜像后,run镜像并映射端口,宿主机和浏览器均不能访问;
后排查发现项目application文件中已指定端口10008,故修改了dockerfile中EXPOSE的端口(run 镜像文件的端口可随机),重新构建镜像运行, 容器内部运行 curl://http:localhost:10008 访问成功,宿主机curl://http:容器ip:10008 访问成功,但Windows 浏览器无法访问,将容器IP加入宿主机hosts文件中即解决问题
问题虽然解决了,但原理还需要进一步研究
2020-1-14更新:
由于容器IP是动态变化的,故不能将其加入宿主机hosts文件,在运行容器时配置相关信息即可解决此问题:
docker run --add-host reg.yzd.com:宿主机IP -p 10009:10009 -d 镜像ID
--add-host:必须是 域名:宿主机IP *域名必须要配置到宿主机hosts文件中
-p 端口必须和dockerfile中一致,因为其他服务需要访问这个域名下对应端口
reg.yzd.com 服务注册域名
附application配置图