docker安装xxl-job连接数据库时显示无法连接问题

背景:

在项目中需要定时任务调度,需要在docker容器中安装xxl-job

遇到的问题

部署成功后,可以访问xxl-job登录界面,点登录没反应,但过一段时间就弹出数据库拒绝连接,说MyBatis连接用户失败

原因:

在docker容器中,不同容器直接是相互隔离互不影响的,如果使用localhost、或者127.0.0.1是无法生效的。

解决方法:

思路:

1、先检查需要连接的数据库用户名和密码是否正确

2、如果是docker中不同容器之间的连接访问,就需要检查服务器内网地址。

3、检测映射的端口是否对应

方法:

查看服务器内网ip地址:

修改application.properties配置:

数据库连接地址和密码

或者使用:容器名加端口号的方式访问,例如我的mysql数据库的容器名是 n_mysql

yml 复制代码
spring.datasource.url=jdbc:mysql://n_mysql:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai

注意:这些操作都是在同一服务器上操作的

在操作这些步骤中,可能有其他原因:

1、是否在同一服务器中操作的,不同服务器之间就不能直接使用局域网ip地址,需要使用公网ip进行访问连接数据库

2、在创建容器时,映射地址是否正确(不限于,路径名称)

3、检测防火墙是否放行相应的端口,不过都能访问后台地址了,不会是防火墙的问题

扩展:

docker内的应用访问宿主机上的mysql和Redis

背景:宿主机部署MySQL、Redis,docker内部署tomcat、jdk

需求:tomcat内的应用访问宿主机的MySQL和Redis 方法: 连接地址切记不能用localhost和127.0.0.1

这些地址代表的都是容器内的系统,根本没有访问到宿主机,会一直报连接mysql/redis异常。 用docker的虚拟网卡地址

在宿主机查询网卡情况------ifconfig docker0这块虚拟网卡的 inet 地址就是正确的本地ip(如172.17.0.1)

相关推荐
joesx26 分钟前
GORM(Go语言数据交互库)
数据库·golang
linux_lsh32 分钟前
opengauss数据库的日常运维操作
运维·数据库
V+zmm1013441 分钟前
学生资助在线管理软件开发微信小程序ssm+论文源码调试讲解
java·数据库·微信小程序·小程序·毕业设计
迷茫运维路42 分钟前
Kubernetes1.28 编译 kubeadm修改证书有效期到 100年.并更新k8s集群证书
云原生·容器·kubernetes
福大大架构师每日一题42 分钟前
1.5 安装Kuboard在页面上熟悉k8s集群
云原生·容器·kubernetes
明月心9521 小时前
docker swarm 部署问题 和 指定节点部署服务
运维·docker·容器
petunsecn1 小时前
MySQL Event Scheduler 详解
数据库·mysql
大房身镇、王师傅1 小时前
Centos9 + Docker 安装 MySQL8.4.0 + 定时备份数据库到本地
docker·centos9·mysql8.4.0·备份mysql数据库
apgk11 小时前
docker 部署 MantisBT
运维·docker·容器
成都—大数据开发工程师—杨洋2 小时前
Tidb集群升级到8.5.0过程中服务器遇到的坑
服务器·数据库·python·tidb·glibc