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