链接报错 org.springframework.jdbc.CannotGetJdbcConnectionException:Could not get JDBC Connection;

文章讲述了作者在使用Docker部署SpringBoot应用时,遇到通过localhost连接MySQL失败的问题。通过分析日志和dockerinspect,发现MySQL容器的IP并非localhost,解决办法是使用服务器IP和映射的端口,同时强调了数据库安全性和防火墙设置的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过查看Docker的tomcat容器的日志看报错

问题截图

(2)分析原因

springBoot打成jar包 通过docker部署 测试接口失败 通过查询docker容器的日志,看到连接数据库失败。此时怀疑

1.可能是数据库账号密码输入错误 警告排查是账号密码没错误,

2.怀疑是mysql的ip地址直接使用localhost或者127.0.0.1 是错误的

(3)解决办法

1.直接尝试使用服务器的ip地址和映射的docker端口号发现成功,放开防火墙,测试成功,说明是直接使用localhost可以,巨坑

windows可以直接使用localhost连接数据库,而docker镜像生成的mysql容器的ip并不是localhost(127.0.0.1)

直接使用服务器的ip和映射的端口,看可以实现数据库的链接但是这是不安全的数据库是不经暴露的,3306,6739(redis)端口服务部署之后是开启防火墙的

2. 通过docker inspect 查看mysql容器的详情



docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql

3.拿到mysql容器的ip 修改application-dev.yml 的mysql的url配置然后再进行接口测试数据查询成功

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值