1,问题描述:
将springboot项目使用docker运行之后,不能访问当前宿主机上另一个使用docker运行的mysql服务;

2,问题点:
在springboot中使用localhost或则使用127.0.0.1地址都是无法找msyql服务的,因为该地址被解析成了当前springboot应用docker容器中的ip地址;

3,解决方法:
1,在springboot应用容器使用宿主机的ip地址,找到宿主机,再通过宿主机与mysql进行通信;
2,使用宿主机公网ip访问mysql服务,这种方式需要将mysql服务暴露到公网,不安全,不推荐;

方法1:
1,首先需要找到docker容器与宿主机之间通信的ip段,而docker与宿主机通信,使用的是一个名为docker0的网络桥与宿主机通信,而宿主机的ip地址一般为:172.17.0.1
可以使用:ifconfig命令进行查看;
如没有ifconfig命令,centos使用yum install net-tools.x86_6 命令安装,其它系统自行百度;
参考图片
2,将springboot应用的链接地址修改为该地址:

 url: jdbc:mysql://172.17.0.1:3306/usa_user_info?useUnicode=true&characterEncoding=UTF-8

3,修改mysql配置文件,让mysql支持该ip地址段的方法;
找到mysql的my.conf文件,并在[mysqld]下面添加,如下配置;

bind-address=172.17.0.1;

表示mysql接受172.17.0.1 ip地址的请求;
附录:使用docker容器部署mysql服务时,挂载my.conf配置文件,及其地址;
https://blog.csdn.net/ii19910410/article/details/88640454

4,重启mysql服务;
宿主机中:service mysqld restart
docker容器中的mysql 重启: docker kill mysql docker start mysql (说明:msyql为容器名或容器id都可);

附录,感谢这位作者的启示:https://blog.csdn.net/metheir/article/details/85055851

Logo

更多推荐