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

使用 Dockerfile 和启动脚本注册 XXL-Job 执行器的正确 IP 地址

解决方案:使用 Dockerfile 和启动脚本注册 XXL-Job 执行器的正确 IP 地址

在使用容器化方式注册 XXL-Job 执行器时,由于容器的 IP 地址是动态分配的,可能会导致调度中心无法访问执行器。为了解决这个问题,可以使用 Dockerfile 和启动脚本的方式来动态获取容器的 IP 地址,并正确注册到 XXL-Job。

在华为云容器化服务中,XXL-Job 执行器自动注册的 IP 地址通常是 http://169.254.1.1:xxxx/,这个地址任务调度器无法访问。

分布式部署的方式手动去填写ip地址肯定不行,因为这个ip地址每次都是变动的。

所以,需要的方案也很简单,就是在容器启动的时候,获取容器的ip地址,然后在启动java服务时,把ip作为一个向xxl-job注册时的参数就行,具体如下:

方式一:

这样写更方便,就不用多出一个脚本了

CMD ["sh", "-c", "EXECUTOR_IP=$(hostname -i) && java -jar xxl-job-executor-1.0.0.jar --spring.profiles.active=prod --xxl.job.executor.ip=$EXECUTOR_IP"]

方式二:

这种方式麻烦点,但如果原先本来就有其他启动脚本的,这样改起来也更清晰。

1. 编写启动脚本

首先,在项目根目录下创建一个 start.sh 启动脚本,用于动态获取容器的 IP 地址并启动 XXL-Job 执行器:

#!/bin/bash
EXECUTOR_IP=$(hostname -i)
java -jar xxl-job-executor-1.0.0.jar --spring.profiles.active=prod --xxl.job.executor.ip=$EXECUTOR_IP

此脚本通过 hostname -i 动态获取容器的 IP 地址,并将其传递给 XXL-Job 执行器启动命令中的 xxl.job.executor.ip 参数。

2. 修改 Dockerfile

Dockerfile 中,将启动脚本复制到容器中并设置为入口命令:

FROM eclipse-temurin:17.0.11_9-jreARG path# 创建工作目录
RUN mkdir -p /home/work/
WORKDIR /home/work# 下载并解压 XXL-Job 执行器
RUN wget $path -O /home/work/xxl-job-executor.tgz
RUN tar -zxvf /home/work/xxl-job-executor.tgz -C /home/work/# 复制启动脚本到容器
COPY start.sh /home/work/start.sh
RUN chmod +x /home/work/start.sh# 暴露执行器的端口
EXPOSE 8082# 设置启动脚本为入口点
ENTRYPOINT ["/home/work/start.sh"]
3. 说明
  • 启动脚本:确保容器启动时动态获取正确的 IP 地址,并将其传递给 XXL-Job 执行器。
  • Dockerfile:配置了启动脚本的路径,并使用 ENTRYPOINT 命令确保脚本在容器启动时执行。
直接在Dockerfile中执行命令
4. 总结

通过这种方式,容器在启动时会动态获取自身的 IP 地址,并将其正确注册到 XXL-Job 中,解决了动态 IP 地址在调度回调时无法访问的问题。这种方法适用于在 Kubernetes 或 Docker Swarm 中部署多个动态 IP 的容器环境。

相关文章:

使用 Dockerfile 和启动脚本注册 XXL-Job 执行器的正确 IP 地址

解决方案:使用 Dockerfile 和启动脚本注册 XXL-Job 执行器的正确 IP 地址 在使用容器化方式注册 XXL-Job 执行器时,由于容器的 IP 地址是动态分配的,可能会导致调度中心无法访问执行器。为了解决这个问题,可以使用 Dockerfile 和…...

Python连接Kafka收发数据等操作

目录 一、Kafka 二、发送端(生产者) 三、接收端(消费者) 四、其他操作 一、Kafka Apache Kafka 是一个开源流处理平台,由 LinkedIn 开发,并于 2011 年成为 Apache 软件基金会的一部分。Kafka 广泛用于构…...

MySql在更新操作时引入“两阶段提交”的必要性

日志模块有两个redo log和binlog,redo log 是引擎层的日志(负责存储相关的事),binlog是在Server层,主要做MySQL共嗯那个层面的事情。redo log就像一个缓冲区,可以让当更新操作的时候先放redo log中&#xf…...

充气模块方案——无刷充气泵pcba方案

在方案开发中,充气效率是无刷充气泵PCBA方案开发中的关键问题。一般通过优化电路设计和控制算法,可以实现高效的气体压缩和快速的充气效果。另外,选择合理的电机驱动器和传感器等元器件能够提高打气泵的功率和效率,减少充气时间&a…...

[sql-03] 求阅读至少两章的人数

准备数据 CREATE TABLE book_read (bookid varchar(150) NOT NULL COMMENT 书籍ID,username varchar(150) DEFAULT NULL COMMENT 用户名,seq varchar(150) comment 章节ID ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT 用户阅读表insert into book_read values(《太子日子》…...

Linux如何通过链接下载文件

在Linux系统中,你可以通过多种方式通过链接下载文件。这些方式包括使用命令行工具(如wget、curl、axel等)和图形界面程序(如浏览器或文件管理器)。以下是几种常用的命令行方法: 1. 使用wget wget是一个非交…...

seL4 IPC(五)

官网链接:link 求解 代码中的很多方法例如这一个教程里面的seL4_GetMR(0),我在官方给的手册和API中都搜不到,想问一下大家这些大家都是在哪里搜的!! IPC seL4中的IPC和一般OS中讲的IPC概念相差比较大,根…...

【Java】多线程基础操作

多线程基础操作 Thread类回顾Thread类观察线程运行线程的休眠常用方法构造方法属性获取方法 中断线程线程状态线程等待 初识synchronized问题引入初步使用初步了解可重入锁死锁 volatile问题引入初步使用volatile 与 synchronized 线程顺序控制初步了解wait()notify()防止线程饿…...

基于Hive和Hadoop的病例分析系统

本项目是一个基于大数据技术的医疗病历分析系统,旨在为用户提供全面的病历信息和深入的医疗数据分析。系统采用 Hadoop 平台进行大规模数据存储和处理,利用 MapReduce 进行数据分析和处理,通过 Sqoop 实现数据的导入导出,以 Spark…...

数据结构编程实践20讲(Python版)—03栈

本文目录 03 栈 StackS1 说明S2 示例基于列表的实现基于链表的实现 S3 问题:复杂嵌套结构的括号匹配问题求解思路Python3程序 S4 问题:基于栈的阶乘计算VS递归实现求解思路Python3程序 S5 问题:逆波兰表示法(后缀表达式)求值求解思路Python3程…...

【注册/登录安全分析报告:孔夫子旧书网】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…...

PMP--二模--解题--141-150

文章目录 14.敏捷--创建敏捷环境--团队构成--混合项目环境,通常是自组织团队,即团队成员自己决定谁做什么,而不是项目经理决定。易混--常见场景--一个新人加入141、 [单选] 在一个混合项目的执行过程中,不得不更换一个开发人员。新…...

我的领域-关怀三次元成长的二次元虚拟陪伴 | OPENAIGC开发者大赛高校组AI创作力奖

在第二届拯救者杯OPENAIGC开发者大赛中,涌现出一批技术突出、创意卓越的作品。为了让这些优秀项目被更多人看到,我们特意开设了优秀作品报道专栏,旨在展示其独特之处和开发者的精彩故事。 无论您是技术专家还是爱好者,希望能带给…...

个人账号(学校+个人)申请专利过程中遇见的问题

一、请指定一位申请人作为代表人 因为是拿个人账号申请的专利,同时要求学校是第一申请人,所以可以再添加一个第二申请人,然后勾选第二申请人为代表人就可以提交申请了(注意:两个申请人只能减免75%,也就是要…...

在ubuntu系统中,如何让其按下物理关机键时,系统不处理,但qt程序能检测到关机键按下的事件,并处理信号

要让 Ubuntu 系统在按下物理关机键时,系统不直接处理该事件,但让你的 Qt 程序能够检测到并处理关机键的按下事件,可以参考以下步骤: 1. 禁用系统对关机键的默认处理 Ubuntu 系统默认会捕获电源键的按下事件并执行关机操作。首先你…...

先进制造aps专题二十六 基于强化学习的人工智能ai生产排程aps模型简介

基于强化学习的人工智能ai生产排程模型简介 人工智能ai能不能做生产排程? 答案是肯定的。 ai的算法分两类,一类是学习,一类是搜索。 而生产排程问题,它是一个搜索问题,本质上,它和下围棋是一样的 我们…...

各领域/行业硬件一览表

专班硬件装备制造agv小车、机械臂、PDA、服务器、大屏、扭矩传感器、温湿度检测仪、粉尘传感器、陀螺仪传感器、3D打印设备、在线质量检测仪器、新能源水表、电表、气表、汽表、服务器、大屏、温度传感器、压力传感器、光照度传感器、RTU医药化工温湿度传感器、压力传感器、流量…...

机器学习-SVM

线性感知机分类 支持向量机 线性感知机(Perceptron) 感知机是线性二值分类器。 注意:什么是线性?线性分割面就是,就是在分割面中,任意两个的连线也在分割面中,这个分割面,就是线…...

翻译器在线翻译:开启多语言交流新时代

随着国际交流、商务合作、文化交融以及互联网的飞速发展,人们对于跨越语言鸿沟的需求日益迫切。翻译工具成为了我们必备的一个工具,这篇文章我们一起来探讨一些好用的翻译器在线翻译工具吧。 1.在线福昕翻译 链接直达>>https://fanyi.pdf365.cn/…...

网络编程(10)——json序列化

十、day10 今天学习如何使用jsoncpp将json数据解析为c对象,将c对象序列化为json数据。jsoncp经常在网络通信中使用,也就是服务器和客户端的通信一般使用json(可视化好);而protobuf一般在服务器之间的通信中使用 json…...

别再让时钟信号‘跑偏’了!手把手教你理解ADC中DCC电路的设计要点

高速ADC设计中的时钟占空比校正实战指南 时钟信号就像ADC系统的心跳,每一次跳动都决定着数据采样的精准度。当这个"心跳"变得不规律时,整个系统的性能就会大打折扣。在高速ADC设计中,时钟占空比失真是一个常见却又容易被忽视的问题…...

“title“: “Java全栈开发面试实录:从基础到实战的深度对话“,

{ "title": "Java全栈开发面试实录:从基础到实战的深度对话", "content": "# Java全栈开发面试实录:从基础到实战的深度对话\n\n## 一、开场白\n\n面试官:你好,欢迎来参加我们公司的Java全栈开…...

OpenClaw环境隔离方案:GLM-4.7-Flash多项目独立配置

OpenClaw环境隔离方案:GLM-4.7-Flash多项目独立配置 1. 为什么需要环境隔离? 去年夏天,我同时接手了两个截然不同的自动化项目:一个是帮朋友处理电商数据整理的私人需求,另一个是公司内部的知识库维护工作。当我兴冲…...

UModel:虚幻引擎资源解析工具零基础入门到高级应用指南

UModel:虚幻引擎资源解析工具零基础入门到高级应用指南 【免费下载链接】UEViewer Viewer and exporter for Unreal Engine 1-4 assets (UE Viewer). 项目地址: https://gitcode.com/gh_mirrors/ue/UEViewer 虚幻引擎资源解析是游戏开发与逆向工程领域的关键…...

10分钟上手!Java开发者也能轻松调用AI,Spring AI Alibaba手把手教你构建智能体!

介绍:还在羡慕Python开发者能轻松调用AI?Spring AI Alibaba让Java也能10分钟构建一个能“思考”和“行动”的智能体,这次手把手教! 系统:Windows jdk版本:17 maven:3.8 模型API Key&#xff1a…...

大多数加密API都不够用:量化团队真正需要的数据到底是什么?

如果你做过加密相关开发,无论是: 量化交易数据平台研究分析风控系统 你大概率都会经历一个阶段: 👉 API 接了一堆,但始终“不够用”。 常见的一个误区 很多人在刚开始做数据接入时,会觉得: …...

NaViL-9B图文问答入门:Web界面支持拖拽上传+历史记录回溯功能

NaViL-9B图文问答入门:Web界面支持拖拽上传历史记录回溯功能 1. 平台介绍 NaViL-9B是一款原生多模态大语言模型,由专业研究机构开发。它不仅能像传统语言模型一样处理纯文本问答,还具备强大的图片理解能力。这意味着你可以上传一张图片&…...

FireRed-OCR保姆级教程:一键部署,精准提取表格公式转Markdown

FireRed-OCR保姆级教程:一键部署,精准提取表格公式转Markdown 1. 引言:为什么选择FireRed-OCR? 在日常工作和学习中,我们经常遇到需要从PDF、图片等文档中提取表格、公式等内容的情况。传统OCR工具往往难以准确识别复…...

精读《Harness design for long-running application development》:真正拉开差距的,不是模型本身,而是你怎么给它harness

精读《Harness design for long-running application development》:真正拉开差距的,不是模型本身,而是你怎么给它搭脚手架 原文:Harness design for long-running application development Anthropic 这篇文章最值得读的地方&a…...

7_Harness驾驭工程安全与成本层:DevSecOps与云成本优化

7_Harness驾驭工程安全与成本层:DevSecOps与云成本优化 关键字: DevSecOps、安全测试编排、STO、SAST、DAST、SCA、OPA策略、策略即代码、Rego、软件供应链安全、SBOM、依赖追溯、云成本管理、CCM、FinOps、资源浪费识别、预算告警、RBAC、审计日志、单位…...