当前位置: 首页 > news >正文

Dockerfile部署xxljob

使用Dockerfile部署xxljob

1. 背景

  1. 我们在使用定时任务调度时,通常会使用xxljob
  2. 容器化部署xxljob,通常使用 docker pull xuxueli/xxl-job-admin:2.4.0 拉取镜像并启动容器。这种方式对于x86架构服务器来说,没有任何问题。但是在arm架构的服务器上,运行容器会报错架构不匹配。
The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
  1. 由于在arm架构无法启动容器,因此,我们采用Dockerfile运行jar包的方式创建容器,使用这种方式,可以规避架构导致的容器运行失败的问题。

2. 前提条件:

  1. 已安装docker及docker-compose
  2. 已存在 jdk 镜像,我使用的是openjdk 17
    在这里插入图片描述

3. 拉取xxljob源码,打包编译

  1. git 项目地址
    https://github.com/xuxueli/xxl-job
    拉取代码
  2. 导入数据
    在项目的 doc/db 目录下有一个sql文件,导入自己的数据库中
  3. idea打开项目,使用maven 拉取依赖
  4. 修改xxl-job-admin工程的 application.properties配置文件,将数据库的配置改为自己的连接信息
  5. 运行xxl-job-admin工程,查看是否正常启动
  6. 启动成功后访问 http://localhost:8080/xxl-job-admin
  7. 如果能正常访问,说明环境没有问题,此时可以将xxl-job-admin打包成jar包

4. 部署xxljob

  1. 将 xxl-job-admin.jar 上传到服务器指定目录,我放在了 /data/xxl-job 目录
  2. 在同级目录创建 logback-spring.xml 用于配置日志
vim logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false"><!--定义日志文件的存储地址 --><property name="LOG_HOME" value="/data/logs/xxl-job/" /><!--<property name="COLOR_PATTERN" value="%black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta( %replace(%caller{1}){'\t|Caller.{1}0|\r\n', ''})- %gray(%msg%xEx%n)" />--><!-- 控制台输出 --><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n</pattern>--><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{50}:%L) - %msg%n</pattern></encoder></appender><!-- 按照每天生成日志文件 --><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!--日志文件输出的文件名 --><FileNamePattern>${LOG_HOME}/xxl-job-%d{yyyy-MM-dd}.%i.log</FileNamePattern><!--日志文件保留天数 --><MaxHistory>30</MaxHistory><maxFileSize>10MB</maxFileSize></rollingPolicy><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 --><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n</pattern></encoder></appender><!--myibatis log configure --><logger name="com.apache.ibatis" level="TRACE" /><logger name="java.sql.Connection" level="DEBUG" /><logger name="java.sql.Statement" level="DEBUG" /><logger name="java.sql.PreparedStatement" level="DEBUG" /><!-- 日志输出级别 --><root level="INFO"><appender-ref ref="STDOUT" /><appender-ref ref="FILE" /></root></configuration>
  1. 在同级目录创建 Dockerfile 文件
vim Dockerfile
FROM openjdk:17 # 引入jdk,对应自己的版本ENV TZ=Asia/ShanghaiADD xxl-job-admin.jar /data/xxl-job/xxl-job-admin.jar
EXPOSE 8080CMD java ${JAVA_OPTS} -Dlogging.config=/data/xxl-job/logback-spring.xml -jar /data/xxl-job/xxl-job-admin.jar
  1. 创建 docker-compose-xxljob.yaml
vim docker-compose-xxljob.yaml
version: '3'
services:  dsp-xxl-job:restart: alwaysbuild: context: /data/xxl-jobdockerfile: Dockerfilecontainer_name: xxl-jobimage: xxl-jobhostname: xxl-jobnetwork_mode: hostprivileged: trueenvironment:TZ:  Asia/ShanghaiSPRING_DATASOURCE_URL: jdbc:mysql://xxx:3306/xxl-job?Unicode=true&characterEncoding=UTF-8SPRING_DATASOURCE_USERNAME: rootSPRING_DATASOURCE_PASSWORD: 123456ports:- 8080:8080volumes:- '/etc/localtime:/etc/localtime:ro'- '/data/xxl-job:/data/xxl-job:ro'- '/data/logs/xxl-job:/data/logs/xxl-job:rw'
  1. 启动容器
docker-compose -f docker-compose-xxljob.yaml up -d
  1. 启动成功后访问 http://服务器IP地址:8080/xxl-job-admin

相关文章:

Dockerfile部署xxljob

使用Dockerfile部署xxljob 1. 背景 我们在使用定时任务调度时&#xff0c;通常会使用xxljob容器化部署xxljob&#xff0c;通常使用 docker pull xuxueli/xxl-job-admin:2.4.0 拉取镜像并启动容器。这种方式对于x86架构服务器来说&#xff0c;没有任何问题。但是在arm架构的服…...

Conda新建python虚拟环境问题

Conda新建python虚拟环境问题&#xff1a; 【问题1】 conda create --name yolov8 python3.10 -y Retrieving notices: …working… done Channels: defaults Platform: win-64 Collecting package metadata (repodata.json): failed UnavailableInvalidChannel: HTTP 404 NO…...

这几个优秀的工具网站真心值得推荐——搜嗖工具箱

即时工具 https://www.67tool.com/ 这是一个专注提升效率的办公工具网站&#xff1b;这也是一个拥有260多款自研在线工具和200多个客户端离线工具的服务网站&#xff1b;这还是一个可以满足包括视频处理、音频处理、图片处理、文档处理、文档转换、办公辅助、图表生成、文本工…...

ESP32开发 -- VSCODE+PlatformIO环境安装

参看官网安装&#xff1a;PlatformIO IDE for VSCode 一、安装PlatformIO IDE 参看&#xff1a;日常生活小技巧 – Visual Studio Code 简单使用 扩展中搜索platformIO IDE 当安装完提示重启之后。 打开一个要创建新工程的文件夹&#xff1a; 点击 Create New Project&…...

MySQL--导入SQL文件(命令行导入)

MySQL--导入SQL文件 一、前言二、导入SQL文件 一、前言 用可视化编辑工具编写&#xff0c;并且在控制台输入命令行在MySQL中导入SQL文件。 在导入SQL文件之前查看了目前存在的数据库 **目标&#xff1a;**在可视化编辑工具(这里以word文档为例&#xff09;中编写SQL语句&…...

【C#基础】函数传参大总结

目录 前言参数是值类型的情况1. 按值传递&#xff08;Pass by Value&#xff09;2. 按引用传递&#xff08;Pass by Reference&#xff09;使用 ref使用 in 3. 输出参数传递&#xff08;Output Parameters&#xff09;参数修饰符对比小结 参数是引用类型的情况1. 按值传递类对象…...

初学51单片机之IO口上下拉电阻相关

本案本来是描述一下I2C总线的&#xff0c;在此之前推荐一下B站一个UP关于时序图的讲解 I2C入门第一节-I2C的基本工作原理_哔哩哔哩_bilibili 不过在描述I2C前先简单的探讨下51单片机IO口下拉电阻的基本情况&#xff0c;事实上这个问题困扰笔者很长时间了&#xff0c;这次也是一…...

Resnet50网络——口腔癌病变识别

一 数据准备 1.导入数据 import matplotlib.pyplot as plt import tensorflow as tf import warnings as w w.filterwarnings(ignore) # 支持中文 plt.rcParams[font.sans-serif] [SimHei] # 用来正常显示中文标签 plt.rcParams[axes.unicode_minus] False # 用来正常显示负…...

Python 中自动打开网页并点击[自动化脚本],Selenium

要在 Python 中自动打开网页并点击第一个 <a> 标签&#xff0c;你需要使用 Selenium&#xff0c;它可以控制浏览器并执行像点击这样的操作。requests 和 BeautifulSoup 只能获取并解析网页内容&#xff0c;但不能进行网页交互操作。 步骤&#xff1a; 安装 Selenium安装…...

Spring Boot-自动配置问题

**### Spring Boot自动配置问题探讨 Spring Boot 是当前 Java 后端开发中非常流行的框架&#xff0c;其核心特性之一便是“自动配置”&#xff08;Auto-Configuration&#xff09;。自动配置大大简化了应用开发过程&#xff0c;开发者不需要编写大量的 XML 配置或是繁琐的 Jav…...

CS61B学习 part1

本人选择了2018spring的课程&#xff0c;因为他免费提供了评分机器&#xff0c;后来得知2021也开放了&#xff0c;决定把其中的Lab尝试一番&#xff0c;听说gitlab就近好评&#xff0c;相当有实力&#xff0c;并借此学习Java的基本知识&#xff0c;请根据pku的cswiki做好评分机…...

我Github的问题解决了!

看的这篇&#xff0c;解决使用git时遇到Failed to connect to github.com port 443 after 21090 ms: Couldn‘t connect to server_git couldnt connect to server-CSDN博客 之前想推送的能推送了&#xff0c;拉取的也能取了。 一、如果是在挂着梯子的情况下拉取或者推送代码…...

Pytorch构建神经网络多元线性回归模型

1.模型线性方程y W ∗ X b from torch import nn import torch#手动设置的W参数&#xff08;待模型学习&#xff09;&#xff0c;这里设置为12个&#xff0c;自己随意设置weight_settorch.tensor([[1.5,2.38,4.22,6.5,7.2,3.21,4.44,6.55,2.48,-1.75,-3.26,4.78]])#手动设置…...

如何基于Flink CDC与OceanBase构建实时数仓,实现简化链路,高效排查

本文作者&#xff1a;阿里云Flink SQL负责人&#xff0c;伍翀&#xff0c;Apache Flink PMC Member & Committer 众多数据领域的专业人士都很熟悉Apache Flink&#xff0c;它作为流式计算引擎&#xff0c;流批一体&#xff0c;其核心在于其强大的分布式流数据处理能力&…...

ActiveMQ、RabbitMQ 和 Kafka 在 Spring Boot 中的实战

在现代的微服务架构和分布式系统中&#xff0c;消息队列 是一种常见的异步通信工具。消息队列允许应用程序之间通过 生产者-消费者模型 进行松耦合、异步交互。在 Spring Boot 中&#xff0c;我们可以通过简单的配置来集成不同的消息队列系统&#xff0c;包括 ActiveMQ、Rabbit…...

火语言RPA流程组件介绍--获取关联元素

&#x1f6a9;【组件功能】&#xff1a;获取指定元素的父元素、子元素、相邻元素等关联信息 配置预览 配置说明 目标元素 支持T或# 默认FLOW输入项 通过自动捕获工具捕获(选择元素工具使用方法)或手动填写网页元素的css,xpath&#xff0c;指定对应网页元素作为操作目标 关联…...

【2024研赛】【华为杯E题】2024 年研究生数学建模比赛思路、代码、论文助攻

思路将在名片下群聊分享 高速公路应急车道紧急启用模型 高速公路拥堵现象的原因众多&#xff0c;除了交通事故外&#xff0c;最典型的就是部分路段出现瓶颈现象&#xff0c;主要原因是车辆汇聚&#xff0c;而拥堵后又容易蔓延。高速公路一些特定的路段容易形成堵点&#xff0…...

Linux——K8s集群部署过程

&#xff11;、环境准备 &#xff08;1&#xff09;配置好网络ip和主机名 control: node1: node2: 配置ip 主机名的过程省略 配置一个简单的基于hosts文件的名称解析 [rootnode1 ~]# vim /etc/hosts // 文件中新增以下三行 192.168.110.10 control 192.168.110.11 node1 1…...

二.Unity中使用虚拟摇杆来控制角色移动

上一篇中我们完成了不借助第三方插件实现手游的虚拟摇杆&#xff0c;现在借助这个虚拟摇杆来实现控制角色的移动。 虚拟摇杆实际上就给角色输出方向&#xff0c;类似于键盘的WSAD&#xff0c;也是一个二维坐标&#xff0c;也就是(-1,1)的范围&#xff0c;将摇杆的方向进行归一化…...

基于SpringBoot的旅游管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 近年来&#xff0c;随着社会经济的快速发展和人民生活水平的显著提高&#xff0c;旅游已成为人们休闲娱乐、增长见识的重要方式。国家积极倡导“全民旅游”&#xff0c;鼓励民众利用节假日外出旅行&#xff0c;探索各地自然与人…...

Linux套接字

目录标题 套接字套接字的基本概念套接字的功能与分类套接字的使用流程套接字的应用场景总结套接字在不同操作系统中的实现差异有哪些&#xff1f;如何优化套接字编程以提高网络通信的效率和安全性&#xff1f;原始套接字&#xff08;SOCK_RAW&#xff09;的具体应用场景和使用示…...

软件测试面试题(5)——二面(游戏测试)

没想到测试题做完等了会儿就安排面试了&#xff0c;还以为自己会直接挂在测试题&#xff0c;这次面试很刺激。测试题总体来说不算太难&#xff0c;主要是实操写Bug那里真没经历过&#xff0c;所以写的很混乱。 我复盘一下这次面试的问题&#xff0c;这次面试是有两个面试官&…...

C#基于SkiaSharp实现印章管理(8)

上一章虽然增加了按路径绘制文本&#xff0c;支持按矩形、圆形、椭圆等路径&#xff0c;但测试时发现通过调整尺寸、偏移量等方式不是很好控制文本的位置。相对而言&#xff0c;使用弧线路径&#xff0c;通过弧线起始角度及弧线角度控制文本位置更简单。同时基于路径绘制文本时…...

信通院发布首个《大模型媒体生产与处理》标准,阿里云智能媒体服务作为业界首家“卓越级”通过

中国信通院近期正式发布《大模型驱动的媒体生产与处理》标准&#xff0c;阿里云智能媒体服务&#xff0c;以“首批首家”通过卓越级评估&#xff0c;并在9大模块50余项测评中表现为“满分”。 当下&#xff0c;AI大模型的快速发展带动了爆发式的海量AI运用&#xff0c;这其中&a…...

AI学习指南深度学习篇-Adam的Python实践

AI学习指南深度学习篇-Adam的Python实践 在深度学习领域&#xff0c;优化算法是影响模型性能的关键因素之一。Adam&#xff08;Adaptive Moment Estimation&#xff09;是一种广泛使用的优化算法&#xff0c;因其在多种问题上均表现优异而被广泛使用。本文将深入探讨Adam优化器…...

08_React redux

React redux 一、理解1、学习文档2、redux 是什么吗3、什么情况下需要使用 redux4、redux 工作流程5、react-redux 模型图 二、redux 的三个核心概念1、action2、reducer3、store 三、redux 的核心 API1、getState()2、dispatch() 四、使用 redux 编写应用1、求和案例\_redux 精…...

2024华为杯研究生数学建模竞赛(研赛)选题建议+初步分析

难度&#xff1a;DE<C<F&#xff0c;开放度&#xff1a;CDE>F。 华为专项的题目&#xff08;A、B题&#xff09;暂不进行选题分析&#xff0c;不太建议大多数同学选择&#xff0c;对自己专业技能有很大自信的可以选择华为专项的题目。后续会直接更新A、B题思路&#…...

001.从0开始实现线性回归(pytorch)

000动手从0实现线性回归 0. 背景介绍 我们构造一个简单的人工训练数据集&#xff0c;它可以使我们能够直观比较学到的参数和真实的模型参数的区别。 设训练数据集样本数为1000&#xff0c;输入个数&#xff08;特征数&#xff09;为2。给定随机生成的批量样本特征 X∈R10002 …...

Relations Prediction for Knowledge Graph Completion using Large Language Models

文章目录 题目摘要简介相关工作方法论实验结论局限性未来工作 题目 使用大型语言模型进行知识图谱补全的关系预测 论文地址&#xff1a;https://arxiv.org/pdf/2405.02738 项目地址&#xff1a; https://github.com/yao8839836/kg-llm 摘要 知识图谱已被广泛用于以结构化格式表…...

2024年中国研究生数学建模竞赛D题思路代码分析——大数据驱动的地理综合问题

地理系统是自然、人文多要素综合作用的复杂巨系统[1-2]&#xff0c;地理学家常用地理综合的方式对地理系统进行主导特征的表达[3]。如以三大阶梯概括中国的地形特征&#xff0c;以秦岭—淮河一线和其它地理区划的方式揭示中国气温、降水、植被、土壤及生态环境在水平和垂直方向…...