docker容器应用链接宿主或其他容器的mysql数据库

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

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值