Docker实例正常启动,且端口正常映射,但是外网无法访问接口服务

1、前提说明:项目使用的是微服务,用的springboot2 2.3.2.RELEASE版本,使用Docker部署服务;

2、出现问题:Docker实例正常启动,且端口正常映射【19960:8080】,但是外网无法访问接口服务;

3、排查步骤:

3.1、检查Docker实例状态,正常启动;

3.2、检查防火墙,是关闭状态;

3.3、检查阿里云服务器对外开放端口,端口也已经开放。

3.4、迷茫中。。。

最后在反复排查中,发现了一个问题:

首先,我在Dockerfile里面设置了:EXPOSE 8080;

然后,项目的yml配置文件端口号配置的是:

server:

         port: 8002

最后,启动Docker时,用的命令是:docker run -d -p 19960:8080 ...

也就是说,容器对外暴露的接口是8080,springboot项目启动的端口是8002,服务器对外的端口是19960。我在使用telnet对应端口时,提示:

于是,我试了这样操作:

1.修改项目的yml配置文件端口号配置的是:

server:

         port: 19960

2.在Dockerfile里面修改设置:EXPOSE 19960;

3.启动Docker时,用的命令是:docker run -d -p 19960:19960 ...

最后,终于可以正常访问了。。。

总结下:容器启动时,docker run -d -p 19960:19960,设置对外暴露的端口,应该是要跟项目配置的服务端口【server.port:19960】保持一致的。

 


版权声明:本文为huangzike原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。