文章目录
- 一、前提环境
- 1. 安装java环境
- 2. 安装maven打包环境
- 3. docker安装mysql
- 二、搭建xxl-job 服务端(源码)
- 三、搭建xxl-job 服务端(docker)
- 四、常见异常解决方案
- 4.1. docker中mysql容器的ip怎样获取?
- 4.2. xxl-job 连接数据库失败?
一、前提环境
1. 安装java环境
下载(略)
环境变量
export JAVA_HOME=/app/jdk1.8.0_202
export PATH=$PATH:$GOROOT/bin
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
刷新环境变量
source /etc/profile
java -version
2. 安装maven打包环境
[root@localhost app]# wget https://mirror.bit.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
[root@localhost app]# tar -zxvf apache-maven-3.6.3-bin.tar.gz
[root@localhost app]# echo 'export PATH=/app/apache-maven-3.6.3/bin:$PATH' >>/etc/profile
[root@localhost app]# source /etc/profile
[root@localhost app]# mvn -v
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /app/apache-maven-3.6.3配置阿里云仓库镜像
[root@localhost app]# cd apache-maven-3.6.3/conf/
[root@localhost conf]# vim settings.xml
找到节点添加即可
<mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror>
3. docker安装mysql
docker 安装 mysql和Navicat Premium 远程连接
https://gblfy.blog.csdn.net/article/details/113809710
二、搭建xxl-job 服务端(源码)
Github地址:https://www.xuxueli.com/xxl-job/
# 调度数据库初始化SQL脚本” 并执行
调度数据库初始化SQL脚本” 位置为:
/xxl-job/doc/db/tables_xxl_job.sql# 在线下载
wget https://github.com/xuxueli/xxl-job/archive/2.3.0.tar.gz# 解压
tar -zxvf xxl-job-2.3.0.tar.gz# 配置mysql密码
vim xxl-job-2.3.0/xxl-job-admin/src/main/resources/application.properties# 项目编译打包
cd xxl-job-2.3.0/
mvn clean install -DskipTests# xxl-job后台部署
cd xxl-job-2.3.0/xxl-job-admin/target
nohup java -jar xxl-job-admin-2.3.0.jar &# 开放8080端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent# 重启防火墙
firewall-cmd --reload# 浏览器访问
http://192.168.43.119:8080/xxl-job-admin/账号/密码:admin/123456
至此“调度中心”项目已经部署成功。
三、搭建xxl-job 服务端(docker)
# 拉取镜像
docker pull xuxueli/xxl-job-admin:2.3.0# 创建容器并运行(这是注意mysql也在docker容器中)
# 第一种:docker中的xxl-job连接docker中的mysql
docker run -e PARAMS="--spring.datasource.url=jdbc:mysql://172.17.0.2:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true --spring.datasource.password=root" -p 8080:8080 -v /tmp:/data/applogs --name xxl-job-admin -d xuxueli/xxl-job-admin:2.3.0# 普通非docker中的mysql(密码默认)
# 第二种:docker中的xxl-job连接宿主机上的mysql
docker run -p 8080:8080 -v /tmp:/data/applogs --name xxl-job-admin -d xuxueli/xxl-job-admin:2.3.0# 普通非docker中的mysql(密码非默认)
# 第三种:docker中的xxl-job连接宿主机上的mysql
docker run -e PARAMS="--spring.datasource.password=root" -p 8080:8080 -v /tmp:/data/applogs --name xxl-job-admin -d xuxueli/xxl-job-admin:2.3.0注:
1.以上属于2种场景(都是docker中应用和一个是docker应用一个不是)
2.第一种:不要添加&serverTimezone=Asia/Shanghai因为docker容器内部不识别,待定位具体原因
3.对于docker中的应用和docker中的应用之间要通信连接,需要连接docker内部的ip,而非宿主机的ip
账号/密码:
admin/123456
四、常见异常解决方案
4.1. docker中mysql容器的ip怎样获取?
docker 中用docker 启动应用访问docker中的mysql
https://gblfy.blog.csdn.net/article/details/113810453
4.2. xxl-job 连接数据库失败?
现象:
解决方案:
通过查看docker中启动的xuxueli/xxl-job-admin:2.3.0容器的日志定位和分析问题‘
# 查看正在运行的xuxueli/xxl-job-admin:2.3.0容器的容器id
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5863bea66ff4 xuxueli/xxl-job-admin:2.3.0 "sh -c 'java -jar $J…" 5 minutes ago Up 5 minutes 0.0.0.0:8080->8080/tcp xxl-job-admin
8172ef0f622c mysql "docker-entrypoint.s…" 39 minutes ago Up 9 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp mymysql
[root@localhost ~]# docker logs -f 5863bea66ff4
异常关键日志:
com.mysql.cj.exceptions.CJException: Unknown database 'xxl_job'从日志中可以看出,很明显连接不上这个数据库
通过客户端连接mysql服务端查看xxl_job是否存在
由于mysql容器是咱们刚创建的因此xxl_job不存在
解决方案:
1.创建数据库
2.初始化表结构