Springboot 项目部署到 docker 无法连通数据库

3 天前
 puremaker

macbook 装了 orbstrack ,用 docker 部署了 mysql 、redis 和 centos 。

我现在有两个 springboot 项目,这两个项目本地开发连接 docker 的 mysql 都没有问题。

然后都部署到同一个 centos 虚拟机里,都使用的是本电脑的局域网 ip 连接的数据库,一个可以正常访问到数据库,一个就访问不到,确认了链接 url 除了库名都是一样的,想请教一下这能是什么原因呢?

708 次点击
所在节点    Java
16 条回复
puremaker
3 天前
并且有问题的这个项目连接到 redis 是正常的。redis 和 mysql 是同一个 ip 地址,映射的不同端口
wangxin3
3 天前
1 、连不上提示什么?
2 、一个项目一个项目试试呢,别同时启动两个。
3 、你这套娃也太狠了 在 centos 里面再装个 docker 呢
stinkytofux
3 天前
mysql 新建数据库的时候是有访问权限的, 需要指定本机访问还是所有人访问, 默认本机访问拒绝外部访问, 既然只是库名不一样导致的问题, 很可能是有问题的库权限的问题, 你可以用 shell 登录到 mysql 检查一下.
howfree
3 天前
看 network 是不是同一个
puremaker
3 天前
@wangxin3
提示这些:
ERROR 526 --- [reate-475603167] com.alibaba.druid.pool.DruidDataSource : create connection SQLException, url: jdbc:mysql://192.168.10.106:60010/the_future_of_bamboo?characterEncoding=utf-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true&serverTimezone=GMT%2B8, errorCode 0, state 08001

java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.

一个项目一个项目试了,一样的问题
没有套娃啊。就是 orbstrack 就是 docker 嘛,起了三个容器,一个 mysql 一个 redis 一个 centos ,项目就在 centos 里运行啊,没套娃啊
wangxin3
3 天前
@puremaker #5 看下数据库驱动对不对,mysql8 版本数据库要换驱动,com.mysql.cj.jdbc.Driver
superrichman
3 天前
你的两个 mysql 是什么版本
zed1018
3 天前
docker run -it --rm bash 你在容器里的 bash 看看端口通不通,通了再考虑背的问题
yinmin
3 天前
你的 2 个容器是不是:一个用 host 网络模式、另外一个是用 bridge 网络模式?你大概率需要配置 docker 主机防火墙开放 tcp 端口的。

其实有 1 个简单有效的方式,容器设置固定 ip 地址,然后连接这个容器固定 ip 地址。
puremaker
3 天前
@stinkytofux 不是这个问题,我把有问题项目的表复制了一份到没问题项目的那个库,然后连到那个库上,也是连接不通
puremaker
3 天前
@yinmin 网络一定是通的各位,因为我把两个项目部署在同一个 centos 虚拟机里,一个能连上 mysql 另一个就正常也应该可以。然后就是我把有问题的那个项目的数据库表拷贝到了没有问题的项目的数据库里,然后把有问题的项目的库改成了没问题项目的那个库,这样正常不就是可以连接了吗。但是还是不行。
puremaker
3 天前
@superrichman 一个 mysql ,只有一个
Latin
2 天前
centos 上是不是启用 ipv6 然后紊乱了
不然就 docker-compose 编排到一起用服务名发现或者固定 network
sazima
2 天前
1. ping 一下
2. telnet 一下
3 使用 mysql 命令连接测试一下。
oneisall8955
2 天前
开 ssh 让我来
yeteng
2 天前
可以把配置文件的数据库连接 IP 改为 MySQL 的容器名称或者给 mysql 容器分配的 IP

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1158782

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX