背景:因项目需要信创,需将原本的mysql数据库,改成达梦数据库
可参考:Docker安装达梦数据库_达梦数据库docker镜像-CSDN博客
PS:部署达梦数据库时,需加上大小写不敏感配置,否则会报无效表明或视图,或无法识别某些列名
--创建表空间
CREATE TABLESPACE "XXLJOB" DATAFILE 'XXLJOB.DBF' SIZE 300 autoextend on maxsize 67108863 CACHE = NORMAL;
--创建用户
CREATE USER "XXLJOB" IDENTIFIED BY "XXLJOB!123" LIMIT PASSWORD_LOCK_TIME 1, PASSWORD_GRACE_TIME 10 DEFAULT TABLESPACE "XXLJOB";
--给用户授权
GRANT "RESOURCE","PUBLIC","DBA","VTI" TO "XXLJOB";
--创建表空间 CREATE TABLESPACE "XXLJOB" DATAFILE 'XXLJOB.DBF' SIZE 300 autoextend on maxsize 67108863 CACHE = NORMAL; --创建用户 CREATE USER "XXLJOB" IDENTIFIED BY "XXLJOB!123" LIMIT PASSWORD_LOCK_TIME 1, PASSWORD_GRACE_TIME 10 DEFAULT TABLESPACE "XXLJOB"; --给用户授权 GRANT "RESOURCE","PUBLIC","DBA","VTI" TO "XXLJOB"; CREATE TABLE "XXLJOB"."XXL_JOB_GROUP" ( "ID" INT IDENTITY(2, 1) NOT NULL, "APP_NAME" VARCHAR(64) NOT NULL, "TITLE" VARCHAR(12) NOT NULL, "ADDRESS_TYPE" INT DEFAULT 0 NOT NULL, "ADDRESS_LIST" TEXT, "UPDATE_TIME" TIMESTAMP(0), NOT CLUSTER PRIMARY KEY("ID")) STORAGE(ON "XXLJOB", CLUSTERBTR) ; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_GROUP"."ADDRESS_LIST" IS '执行器地址列表,多地址逗号分隔'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_GROUP"."ADDRESS_TYPE" IS '执行器地址类型:0=自动注册、1=手动录入'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_GROUP"."APP_NAME" IS '执行器AppName'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_GROUP"."TITLE" IS '执行器名称'; CREATE TABLE "XXLJOB"."XXL_JOB_INFO" ( "ID" INT IDENTITY(2, 1) NOT NULL, "JOB_GROUP" INT NOT NULL, "JOB_DESC" VARCHAR(255) NOT NULL, "ADD_TIME" TIMESTAMP(0), "UPDATE_TIME" TIMESTAMP(0), "AUTHOR" VARCHAR(64), "ALARM_EMAIL" VARCHAR(255), "SCHEDULE_TYPE" VARCHAR(50) DEFAULT 'NONE' NOT NULL, "SCHEDULE_CONF" VARCHAR(128), "MISFIRE_STRATEGY" VARCHAR(50) DEFAULT 'DO_NOTHING' NOT NULL, "EXECUTOR_ROUTE_STRATEGY" VARCHAR(50), "EXECUTOR_HANDLER" VARCHAR(255), "EXECUTOR_PARAM" VARCHAR(512), "EXECUTOR_BLOCK_STRATEGY" VARCHAR(50), "EXECUTOR_TIMEOUT" INT DEFAULT 0 NOT NULL, "EXECUTOR_FAIL_RETRY_COUNT" INT DEFAULT 0 NOT NULL, "GLUE_TYPE" VARCHAR(50) NOT NULL, "GLUE_SOURCE" CLOB, "GLUE_REMARK" VARCHAR(128), "GLUE_UPDATETIME" TIMESTAMP(0), "CHILD_JOBID" VARCHAR(255), "TRIGGER_STATUS" INT DEFAULT 0 NOT NULL, "TRIGGER_LAST_TIME" BIGINT DEFAULT 0 NOT NULL, "TRIGGER_NEXT_TIME" BIGINT DEFAULT 0 NOT NULL, NOT CLUSTER PRIMARY KEY("ID")) STORAGE(ON "XXLJOB", CLUSTERBTR) ; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_INFO"."ALARM_EMAIL" IS '报警邮件'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_INFO"."AUTHOR" IS '作者'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_INFO"."CHILD_JOBID" IS '子任务ID,多个逗号分隔'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_INFO"."EXECUTOR_BLOCK_STRATEGY" IS '阻塞处理策略'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_INFO"."EXECUTOR_FAIL_RETRY_COUNT" IS '失败重试次数'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_INFO"."EXECUTOR_HANDLER" IS '执行器任务handler'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_INFO"."EXECUTOR_PARAM" IS '执行器任务参数'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_INFO"."EXECUTOR_ROUTE_STRATEGY" IS '执行器路由策略'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_INFO"."EXECUTOR_TIMEOUT" IS '任务执行超时时间,单位秒'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_INFO"."GLUE_REMARK" IS 'GLUE备注'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_INFO"."GLUE_SOURCE" IS 'GLUE源代码'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_INFO"."GLUE_TYPE" IS 'GLUE类型'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_INFO"."GLUE_UPDATETIME" IS 'GLUE更新时间'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_INFO"."JOB_GROUP" IS '执行器主键ID'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_INFO"."MISFIRE_STRATEGY" IS '调度过期策略'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_INFO"."SCHEDULE_CONF" IS '调度配置,值含义取决于调度类型'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_INFO"."SCHEDULE_TYPE" IS '调度类型'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_INFO"."TRIGGER_LAST_TIME" IS '上次调度时间'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_INFO"."TRIGGER_NEXT_TIME" IS '下次调度时间'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_INFO"."TRIGGER_STATUS" IS '调度状态:0-停止,1-运行'; CREATE TABLE "XXLJOB"."XXL_JOB_LOCK" ( "LOCK_NAME" VARCHAR(50) NOT NULL, NOT CLUSTER PRIMARY KEY("LOCK_NAME")) STORAGE(ON "XXLJOB", CLUSTERBTR) ; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_LOCK"."LOCK_NAME" IS '锁名称'; CREATE TABLE "XXLJOB"."XXL_JOB_LOG" ( "ID" BIGINT IDENTITY(1, 1) NOT NULL, "JOB_GROUP" INT NOT NULL, "JOB_ID" INT NOT NULL, "EXECUTOR_ADDRESS" VARCHAR(255), "EXECUTOR_HANDLER" VARCHAR(255), "EXECUTOR_PARAM" VARCHAR(512), "EXECUTOR_SHARDING_PARAM" VARCHAR(20), "EXECUTOR_FAIL_RETRY_COUNT" INT DEFAULT 0 NOT NULL, "TRIGGER_TIME" TIMESTAMP(0), "TRIGGER_CODE" INT NOT NULL, "TRIGGER_MSG" TEXT, "HANDLE_TIME" TIMESTAMP(0), "HANDLE_CODE" INT NOT NULL, "HANDLE_MSG" TEXT, "ALARM_STATUS" TINYINT DEFAULT 0 NOT NULL, NOT CLUSTER PRIMARY KEY("ID")) STORAGE(ON "XXLJOB", CLUSTERBTR) ; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_LOG"."ALARM_STATUS" IS '告警状态:0-默认、1-无需告警、2-告警成功、3-告警失败'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_LOG"."EXECUTOR_ADDRESS" IS '执行器地址,本次执行的地址'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_LOG"."EXECUTOR_FAIL_RETRY_COUNT" IS '失败重试次数'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_LOG"."EXECUTOR_HANDLER" IS '执行器任务handler'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_LOG"."EXECUTOR_PARAM" IS '执行器任务参数'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_LOG"."EXECUTOR_SHARDING_PARAM" IS '执行器任务分片参数,格式如 1/2'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_LOG"."HANDLE_CODE" IS '执行-状态'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_LOG"."HANDLE_MSG" IS '执行-日志'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_LOG"."HANDLE_TIME" IS '执行-时间'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_LOG"."JOB_GROUP" IS '执行器主键ID'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_LOG"."JOB_ID" IS '任务,主键ID'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_LOG"."TRIGGER_CODE" IS '调度-结果'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_LOG"."TRIGGER_MSG" IS '调度-日志'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_LOG"."TRIGGER_TIME" IS '调度-时间'; CREATE INDEX "I_TRIGGER_TIME" ON "XXLJOB"."XXL_JOB_LOG"("TRIGGER_TIME" ASC) STORAGE(ON "XXLJOB", CLUSTERBTR) ; CREATE INDEX "I_HANDLE_CODE" ON "XXLJOB"."XXL_JOB_LOG"("HANDLE_CODE" ASC) STORAGE(ON "XXLJOB", CLUSTERBTR) ; CREATE TABLE "XXLJOB"."XXL_JOB_LOGGLUE" ( "ID" INT IDENTITY(1, 1) NOT NULL, "JOB_ID" INT NOT NULL, "GLUE_TYPE" VARCHAR(50), "GLUE_SOURCE" CLOB, "GLUE_REMARK" VARCHAR(128) NOT NULL, "ADD_TIME" TIMESTAMP(0), "UPDATE_TIME" TIMESTAMP(0), NOT CLUSTER PRIMARY KEY("ID")) STORAGE(ON "XXLJOB", CLUSTERBTR) ; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_LOGGLUE"."GLUE_REMARK" IS 'GLUE备注'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_LOGGLUE"."GLUE_SOURCE" IS 'GLUE源代码'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_LOGGLUE"."GLUE_TYPE" IS 'GLUE类型'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_LOGGLUE"."JOB_ID" IS '任务,主键ID'; CREATE TABLE "XXLJOB"."XXL_JOB_LOG_REPORT" ( "ID" INT IDENTITY(1, 1) NOT NULL, "TRIGGER_DAY" TIMESTAMP(0), "RUNNING_COUNT" INT DEFAULT 0 NOT NULL, "SUC_COUNT" INT DEFAULT 0 NOT NULL, "FAIL_COUNT" INT DEFAULT 0 NOT NULL, "UPDATE_TIME" TIMESTAMP(0), NOT CLUSTER PRIMARY KEY("ID"), CONSTRAINT "I_TRIGGER_DAY" UNIQUE("TRIGGER_DAY")) STORAGE(ON "XXLJOB", CLUSTERBTR) ; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_LOG_REPORT"."FAIL_COUNT" IS '执行失败-日志数量'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_LOG_REPORT"."RUNNING_COUNT" IS '运行中-日志数量'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_LOG_REPORT"."SUC_COUNT" IS '执行成功-日志数量'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_LOG_REPORT"."TRIGGER_DAY" IS '调度-时间'; CREATE TABLE "XXLJOB"."XXL_JOB_REGISTRY" ( "ID" INT IDENTITY(1, 1) NOT NULL, "REGISTRY_GROUP" VARCHAR(50) NOT NULL, "REGISTRY_KEY" VARCHAR(255) NOT NULL, "REGISTRY_VALUE" VARCHAR(255) NOT NULL, "UPDATE_TIME" TIMESTAMP(0), NOT CLUSTER PRIMARY KEY("ID")) STORAGE(ON "XXLJOB", CLUSTERBTR) ; CREATE INDEX "I_G_K_V" ON "XXLJOB"."XXL_JOB_REGISTRY"("REGISTRY_GROUP" ASC,"REGISTRY_KEY" ASC,"REGISTRY_VALUE" ASC) STORAGE(ON "XXLJOB", CLUSTERBTR) ; CREATE TABLE "XXLJOB"."XXL_JOB_USER" ( "ID" INT IDENTITY(2, 1) NOT NULL, "USERNAME" VARCHAR(50) NOT NULL, "PASSWORD" VARCHAR(50) NOT NULL, "ROLE" TINYINT NOT NULL, "PERMISSION" VARCHAR(255), NOT CLUSTER PRIMARY KEY("ID"), CONSTRAINT "I_USERNAME" UNIQUE("USERNAME")) STORAGE(ON "XXLJOB", CLUSTERBTR) ; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_USER"."PASSWORD" IS '密码'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_USER"."PERMISSION" IS '权限:执行器ID列表,多个逗号分割'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_USER"."ROLE" IS '角色:0-普通用户、1-管理员'; COMMENT ON COLUMN "XXLJOB"."XXL_JOB_USER"."USERNAME" IS '账号'; INSERT INTO XXLJOB."xxl_job_group"("app_name", "title", "address_type", "address_list", "update_time") VALUES (1, 'xxl-job-executor-sample', '示例执行器', 0, NULL, '2018-11-03 22:21:31' ); INSERT INTO XXLJOB."xxl_job_info"("job_group", "job_desc", "add_time", "update_time", "author", "alarm_email", "schedule_type", "schedule_conf", "misfire_strategy", "executor_route_strategy", "executor_handler", "executor_param", "executor_block_strategy", "executor_timeout", "executor_fail_retry_count", "glue_type", "glue_source", "glue_remark", "glue_updatetime", "child_jobid") VALUES (1, 1, '测试任务1', '2018-11-03 22:21:31', '2018-11-03 22:21:31', 'XXL', '', 'CRON', '0 0 0 * * ? *', 'DO_NOTHING', 'FIRST', 'demoJobHandler', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2018-11-03 22:21:31', ''); INSERT INTO XXLJOB."xxl_job_user"("username", "password", "role", "permission") VALUES (1, 'admin', 'e10adc3949ba59abbe56e057f20f883e', 1, NULL); INSERT INTO XXLJOB."xxl_job_lock" ( "lock_name") VALUES ( 'schedule_lock'); commit;
这里以xxl-job-2.3.0为例子
可参考:Release XXL-JOB v2.3.0,分布式任务调度平台 · xuxueli/xxl-job · GitHub
首先在xxl-job-admin的pom.xml中引入达梦数据库依赖
com.dameng
DmJdbcDriver18
8.1.3.140
spring.datasource.driver-class-name=dm.jdbc.driver.DmDriver
spring.datasource.url=jdbc:dm://192.168.111.129:5236?schema=XXLJOB&characterEncoding=UTF-8&useUnicode=true&serverTimezone=Asia/Shanghai
spring.datasource.username=XXLJOB
spring.datasource.password=XXLJOB!123
XxlJobGroupMapper.xml
t.id, t.app_name, t.title, t.address_type, t.address_list, t.update_time INSERT INTO "XXLJOB"."XXL_JOB_GROUP" ( app_name, title, address_type, address_list, update_time) values ( #{appname}, #{title}, #{addressType}, #{addressList}, #{updateTime} ); UPDATE "XXLJOB"."XXL_JOB_GROUP" SET app_name = #{appname}, title = #{title}, address_type = #{addressType}, address_list = #{addressList}, update_time = #{updateTime} WHERE id = #{id} DELETE FROM "XXLJOB"."XXL_JOB_GROUP" WHERE id = #{id}
XxlJobInfoMapper.xml
t.id, t.job_group, t.job_desc, t.add_time, t.update_time, t.author, t.alarm_email, t.schedule_type, t.schedule_conf, t.misfire_strategy, t.executor_route_strategy, t.executor_handler, t.executor_param, t.executor_block_strategy, t.executor_timeout, t.executor_fail_retry_count, t.glue_type, t.glue_source, t.glue_remark, t.glue_updatetime, t.child_jobid, t.trigger_status, t.trigger_last_time, t.trigger_next_time INSERT INTO "XXLJOB"."XXL_JOB_INFO" ( job_group, job_desc, add_time, update_time, author, alarm_email, schedule_type, schedule_conf, misfire_strategy, executor_route_strategy, executor_handler, executor_param, executor_block_strategy, executor_timeout, executor_fail_retry_count, glue_type, glue_source, glue_remark, glue_updatetime, child_jobid, trigger_status, trigger_last_time, trigger_next_time ) VALUES ( #{jobGroup}, #{jobDesc}, #{addTime}, #{updateTime}, #{author}, #{alarmEmail}, #{scheduleType}, #{scheduleConf}, #{misfireStrategy}, #{executorRouteStrategy}, #{executorHandler}, #{executorParam}, #{executorBlockStrategy}, #{executorTimeout}, #{executorFailRetryCount}, #{glueType}, #{glueSource}, #{glueRemark}, #{glueUpdatetime}, #{childJobId}, #{triggerStatus}, #{triggerLastTime}, #{triggerNextTime} ); UPDATE "XXLJOB"."XXL_JOB_INFO" SET job_group = #{jobGroup}, job_desc = #{jobDesc}, update_time = #{updateTime}, author = #{author}, alarm_email = #{alarmEmail}, schedule_type = #{scheduleType}, schedule_conf = #{scheduleConf}, misfire_strategy = #{misfireStrategy}, executor_route_strategy = #{executorRouteStrategy}, executor_handler = #{executorHandler}, executor_param = #{executorParam}, executor_block_strategy = #{executorBlockStrategy}, executor_timeout = ${executorTimeout}, executor_fail_retry_count = ${executorFailRetryCount}, glue_type = #{glueType}, glue_source = #{glueSource}, glue_remark = #{glueRemark}, glue_updatetime = #{glueUpdatetime}, child_jobid = #{childJobId}, trigger_status = #{triggerStatus}, trigger_last_time = #{triggerLastTime}, trigger_next_time = #{triggerNextTime} WHERE id = #{id} DELETE FROM "XXLJOB"."XXL_JOB_INFO" WHERE id = #{id} UPDATE "XXLJOB"."XXL_JOB_INFO" SET trigger_last_time = #{triggerLastTime}, trigger_next_time = #{triggerNextTime}, trigger_status = #{triggerStatus} WHERE id = #{id}
XxlJobLogGlueMapper.xml
t.id, t.job_id, t.glue_type, t.glue_source, t.glue_remark, t.add_time, t.update_time INSERT INTO "XXLJOB"."XXL_JOB_LOGGLUE" ( job_id, glue_type, glue_source, glue_remark, add_time, update_time ) VALUES ( #{jobId}, #{glueType}, #{glueSource}, #{glueRemark}, #{addTime}, #{updateTime} ); DELETE FROM "XXLJOB"."XXL_JOB_LOGGLUE" WHERE id NOT in( SELECT id FROM( SELECT id FROM "XXLJOB"."XXL_JOB_LOGGLUE" WHERE job_id = #{jobId} ORDER BY update_time desc LIMIT 0, #{limit} ) t1 ) AND job_id = #{jobId} DELETE FROM "XXLJOB"."XXL_JOB_LOGGLUE" WHERE job_id = #{jobId}
XxlJobLogMapper.xml
t.id, t.job_group, t.job_id, t.executor_address, t.executor_handler, t.executor_param, t.executor_sharding_param, t.executor_fail_retry_count, t.trigger_time, t.trigger_code, t.trigger_msg, t.handle_time, t.handle_code, t.handle_msg, t.alarm_status INSERT INTO "XXLJOB"."XXL_JOB_LOG" ( job_group, job_id, trigger_time, trigger_code, handle_code ) VALUES ( #{jobGroup}, #{jobId}, #{triggerTime}, #{triggerCode}, #{handleCode} ); UPDATE "XXLJOB"."XXL_JOB_LOG" SET trigger_time= #{triggerTime}, trigger_code= #{triggerCode}, trigger_msg= #{triggerMsg}, executor_address= #{executorAddress}, executor_handler=#{executorHandler}, executor_param= #{executorParam}, executor_sharding_param= #{executorShardingParam}, executor_fail_retry_count= #{executorFailRetryCount} WHERE `id`= #{id} UPDATE "XXLJOB"."XXL_JOB_LOG" SET handle_time= #{handleTime}, handle_code= #{handleCode}, handle_msg= #{handleMsg} WHERE `id`= #{id} delete from "XXLJOB"."XXL_JOB_LOG" WHERE job_id = #{jobId} delete from "XXLJOB"."XXL_JOB_LOG" WHERE id in #{item} UPDATE "XXLJOB"."XXL_JOB_LOG" SET alarm_status = #{newAlarmStatus} WHERE id= #{logId} AND alarm_status = #{oldAlarmStatus}
XxlJobLogReportMapper.xml
t.id, t.trigger_day, t.running_count, t.suc_count, t.fail_count INSERT INTO "XXLJOB"."XXL_JOB_LOG_REPORT" ( trigger_day, running_count, suc_count, fail_count ) VALUES ( #{triggerDay}, #{runningCount}, #{sucCount}, #{failCount} ); UPDATE "XXLJOB"."XXL_JOB_LOG_REPORT" SET running_count = #{runningCount}, suc_count = #{sucCount}, fail_count = #{failCount} WHERE trigger_day = #{triggerDay}
XxlJobRegistryMapper.xml
t.id, t.registry_group, t.registry_key, t.registry_value, t.update_time DELETE FROM "XXLJOB"."XXL_JOB_REGISTRY" WHERE id in #{item} UPDATE "XXLJOB"."XXL_JOB_REGISTRY" SET update_time = #{updateTime} WHERE registry_group = #{registryGroup} AND registry_key = #{registryKey} AND registry_value = #{registryValue} INSERT INTO "XXLJOB"."XXL_JOB_REGISTRY"( registry_group , registry_key , registry_value, update_time) VALUES( #{registryGroup} , #{registryKey} , #{registryValue}, #{updateTime}) DELETE FROM "XXLJOB"."XXL_JOB_REGISTRY" WHERE registry_group = #{registryGroup} AND registry_key = #{registryKey} AND registry_value = #{registryValue}
XxlJobUserMapper.xml
t.id, t.username, t.password, t.role, t.permission INSERT INTO "XXLJOB"."XXL_JOB_USER" ( username, password, role, permission ) VALUES ( #{username}, #{password}, #{role}, #{permission} ); UPDATE "XXLJOB"."XXL_JOB_USER" SET password = #{password}, role = #{role}, permission = #{permission} WHERE id = #{id} DELETE FROM "XXLJOB"."XXL_JOB_USER" WHERE id = #{id}
vi Dockerfile
FROM java:8
MAINTAINER wux
ENV JAVA_HOME=/jdk1.8.0_261
ENV PATH=$PATH:$JAVA_HOME/bin
ENV LC_ALL=en_US.utf8
ENV LANG=en_US.utf8
ENV LANGUAGE=en_US.utf8
#修改Docker时区-否则里面的时间会慢8小时
#通过文件链接的方式修改 时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezoneADD xxl-job-admin-2.3.0-SNAPSHOT.jar app.jar
EXPOSE 8088
ENTRYPOINT ["java", "-Dfile.encoding=utf-8","-jar", "app.jar"]
PS:如果想使用外置配置文件,添加如下内容:
# 设置外部配置文件路径(必须,否则无法加载到此配置文件)
ENV JAVA_OPTS="-Dspring.config.location=/xxl-job/application.properties"
# 复制配置文件到容器中
COPY ./application.properties /xxl-job/application.properties
PS:上面的基础镜像java:8 可参考:Docker 制作java8镜像-CSDN博客
docker build -t xxl-job-dm:2.3.0 .
出现上图表示镜像制作成功
vi docker_xxl-job-dm_start.sh
app_name='xxl-job-dm'
docker stop ${app_name}
echo '--------stop container-------------'docker rm ${app_name}
echo '--------rm container---------------'docker run -p 8088:8088 --name ${app_name} \
-m 2g \
--privileged=true \
-e TZ="Asia/Shanghai" \
--restart always \
-v /etc/localtime:/etc/localtime \
-v /home/data/develop/xxl-job/:/data/applogs \
# 启动容器时指定使用外置配置文件-v /home/data/develop/xxl-job/application.properties:/application.properties \
-e PARAMS='--spring.config.location=/application.properties' \
-d ${app_name}:2.3.0echo '---------start container---------'
sh docker_xxl-job-dm_start.sh
firewall-cmd --zone=public --add-port=8088/tcp --permanent
firewall-cmd --reload
在浏览器输入:http://192.168.111.129:8088/xxl-job-admin
用户名/密码:admin/123456
docker save -o xxl-job-dm.tar xxl-job-dm:2.3.0
docker load -i xxl-job-dm.tar
在/home/data/jars/xxl-job-admin目录下上传xxl-job-admin-2.4.0.jar
### web
server.port=8080
server.servlet.context-path=/xxl-job-admin### xxl-job, datasource
spring.datasource.url=jdbc:mysql://192.168.111.129:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=mariadb
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
### xxl-job, email
# spring.mail.host=smtp.qq.com
# spring.mail.port=25
# spring.mail.username=xxx@qq.com
# spring.mail.from=xxx@qq.com
# spring.mail.password=xxx
# spring.mail.properties.mail.smtp.auth=true
# spring.mail.properties.mail.smtp.starttls.enable=true
# spring.mail.properties.mail.smtp.starttls.required=true
# spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory### xxl-job, access token
xxl.job.accessToken=### xxl-job, i18n (default is zh_CN, and you can choose "zh_CN", "zh_TC" and "en")
xxl.job.i18n=zh_CN## xxl-job, triggerpool max size
xxl.job.triggerpool.fast.max=50
xxl.job.triggerpool.slow.max=20### xxl-job, log retention days
xxl.job.logretentiondays=30
#!/bin/bash
APPHOME=/home/data/jars/xxl-job-admin
APPHOMELOG=/home/data/monitorlog/xxl-job-admin# kill all the xxj-job apps
pids=$(ps aux | egrep 'xxl-job-admin.*' | grep 'java' | awk '{print $2}')
if [ -n "$pids" ]; then
echo "killing xxl-job-admin with pid $pids"
kill $pids
sleep 4
fi
# start webapp
cd $APPHOME/
echo "apphome=" $APPHOME
source /etc/profile
source /root/.bash_profilenohup java -jar /home/data/jars/xxl-job-admin/xxl-job-admin-2.4.0.jar --server.port=8100 &>> $APPHOMELOG/`date +%F`.log &
echo "xxl-job-admin started..."
# show all ps
ps aux | egrep '(xxl-job.*)'
启动应用 :
sh start.sh
浏览器访问:http://192.168.111.129:8100/xxl-job-admin/