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

XXL-Job Docker 部署中“登录无响应”的排查与解决

前言最近在 Ubuntu 服务器上使用 Docker 部署 XXL-Job 分布式任务调度平台时遇到了一个典型但容易踩坑的网络问题调度中心容器与 MySQL 容器无法正常通信导致登录界面点击后毫无反应。本文将复盘整个部署过程并重点分享如何通过 Docker 自定义网络彻底解决该问题。如果你也正准备在 Linux 环境下用 Docker 搭建 XXL-Job或者遇到类似的容器互联问题相信这篇文章能帮你少走弯路。环境说明操作系统Ubuntu 20.04 / 22.04Intel 芯片Docker 版本20.10MySQL已通过 Docker 运行amd64/mysql:5.7.36容器端口映射3306:3306容器名mysqlroot 密码rootXXL-Job 版本2.4.0数据挂载路径/data/docker/xxl-job/logs第一阶段初始化数据库XXL-Job 依赖 MySQL 存储任务元数据首先需要执行官方提供的初始化脚本。# 下载 2.4.0 版本的 SQL 脚本wgethttps://raw.githubusercontent.com/xuxueli/xxl-job/2.4.0/doc/db/tables_xxl_job.sql# 将脚本导入已运行的 MySQL 容器dockerexec-imysql mysql-uroot-proottables_xxl_job.sql验证表是否创建成功dockerexec-itmysql mysql-uroot-proot-eUSE xxl_job; SHOW TABLES;若看到xxl_job_info、xxl_job_log等表说明数据库初始化完成。第二阶段启动调度中心首次尝试方案一按照常规思路我将 MySQL 端口映射到了宿主机3306于是尝试让 XXL-Job 容器通过127.0.0.1:3306连接数据库dockerrun-d\--namexxl-job-admin\--restartalways\-p8080:8080\-v/data/docker/xxl-job/logs:/data/applogs\-ePARAMS--spring.datasource.urljdbc:mysql://127.0.0.1:3306/xxl_job?useUnicodetruecharacterEncodingUTF-8autoReconnecttrueserverTimezoneAsia/Shanghai \ --spring.datasource.usernameroot \ --spring.datasource.passwordroot \ --xxl.job.accessTokendefault_token\xuxueli/xxl-job-admin:2.4.0容器启动正常访问http://服务器IP:8080/xxl-job-admin也能看到登录页。然而输入账号admin密码123456点击登录后页面毫无反应浏览器控制台也没有明显报错。第三阶段问题排查1. 查看容器日志dockerlogs-f--tail100xxl-job-admin日志中抛出了关键异常org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.很明显调度中心根本无法连接到 MySQL 数据库。2. 分析网络隔离原因问题的根源在于 Docker 容器的网络隔离机制XXL-Job 容器内使用的127.0.0.1指向的是容器自身而不是宿主机。MySQL 虽然通过-p 3306:3306将端口映射到了宿主机但容器想要访问宿主机网络不能直接使用127.0.0.1。3. 尝试方案一host.docker.internal在 Mac/Windows 的 Docker Desktop 中可以使用特殊域名host.docker.internal来访问宿主机。我尝试在 Linux 下也使用该方式将连接地址改为jdbc:mysql://host.docker.internal:3306/xxl_job?...重新启动容器后问题依旧。查阅文档发现在 Linux 系统上Docker 默认并不支持host.docker.internal除非在docker run时添加--add-host参数手动映射。因此方案一失败。第四阶段最终解决方案方案二—— 使用 Docker 自定义网络最标准、最稳定的做法是将两个容器置于同一个自定义 Docker 网络中直接通过容器名互相访问。步骤详解1. 创建自定义桥接网络dockernetwork create xxl-net2. 将已运行的 MySQL 容器连接到该网络dockernetwork connect xxl-net mysql3. 启动 XXL-Job 容器并加入同一网络注意数据库连接地址直接使用 MySQL 容器名mysql# 如果之前启动过 xxl-job-admin先停止并删除dockerstop xxl-job-admindockerrmxxl-job-admin# 使用新网络启动dockerrun-d\--namexxl-job-admin\--networkxxl-net\--restartalways\-p8080:8080\-v/data/docker/xxl-job/logs:/data/applogs\-ePARAMS--spring.datasource.urljdbc:mysql://mysql:3306/xxl_job?useUnicodetruecharacterEncodingUTF-8autoReconnecttrueserverTimezoneAsia/Shanghai \ --spring.datasource.usernameroot \ --spring.datasource.passwordroot \ --xxl.job.accessTokendefault_token\xuxueli/xxl-job-admin:2.4.0原理说明同一个自定义网络内的容器Docker 会提供内置的 DNS 服务。容器名mysql会被解析为 MySQL 容器的内部 IP无需关心端口映射直接通过容器的3306端口通信。这种方式避免了宿主机端口暴露带来的安全隐患也绕过了127.0.0.1的歧义问题。4. 验证结果再次访问http://服务器IP:8080/xxl-job-admin输入admin/123456登录成功如果遇到密码错误可以进入 MySQL 容器手动将xxl_job_user表中admin用户的密码改为 MD5 值e10adc3949ba59abbe56e057f20f883e对应123456因为 2.4.0 版本存在密码加密方式不一致的已知问题。总结本次部署的核心卡点在于Docker 容器间的网络通信。通过自定义网络xxl-net我们实现了调度中心与 MySQL 的稳定互联配置简洁无需关心宿主机 IP 变化符合 Docker 最佳实践易于后续扩展如增加更多执行器容器完整部署架构图简化版一些经验教训在 Linux 上不要依赖host.docker.internal除非你手动在docker run中添加--add-host host.docker.internal:host-gateway。优先使用 Docker 自定义网络来处理容器间通信这是官方推荐的方式。遇到问题时第一时间查看容器日志docker logs 容器名往往能直接定位错误。希望这篇记录能帮助你在 Docker 上顺利部署 XXL-Job也为你处理类似的容器网络问题提供一个清晰的思路。

相关文章:

XXL-Job Docker 部署中“登录无响应”的排查与解决

前言 最近在 Ubuntu 服务器上使用 Docker 部署 XXL-Job 分布式任务调度平台时,遇到了一个典型但容易踩坑的网络问题:调度中心容器与 MySQL 容器无法正常通信,导致登录界面点击后毫无反应。本文将复盘整个部署过程,并重点分享如何通…...

Windows (PowerShell)安装部署OpenClaw

本文主要描述如何在Windows (PowerShell)操作系统中安装部署OpenClaw以及对接阿里云千问大模型服务。 阿里云大模型平台安装部署千问大模型服务 登录阿里云大模型部署平台: 安装运行大模型的支撑工具: pip install githttps://github.com/sgl-project…...

2026市场岗位学数据分析的价值分析

一、2026年市场岗位中数据分析的重要性数据分析在市场岗位中的作用日益凸显,2026年预计将成为核心技能之一。随着数字化进程加速,市场决策越来越依赖数据驱动,掌握数据分析能力将显著提升职业竞争力。二、数据分析在市场岗位中的具体应用市场…...

安全使用 static_cast 进行类型转换的技巧

在 C++ 编程中,类型转换是一个常见但需要谨慎处理的操作。特别是当涉及到继承体系中的类型转换时,static_cast 和 dynamic_cast 之间的选择常常会引起讨论。本文将探讨如何安全地使用 static_cast 进行类型转换,并结合实例说明其使用场景。 理解 static_cast static_cast …...

解析Pandas 1.3.2版本的XML数据读取问题

在使用Pandas处理XML格式的数据时,经常会遇到数据类型不符合预期的情况,特别是在处理压缩的XML文件(如.xml.gz)时。让我们通过一个实际的例子来探讨如何解决Pandas 1.3.2版本中没有dtype参数的问题。 问题描述 假设我们有两个XML数据文件,每个文件包含多个<Data>元…...

Product Hunt 每日热榜 | 2026-04-19

1. Claude Design by Anthropic Labs 标语&#xff1a;与Claude对话&#xff0c;制作原型、幻灯片和单页简介。 介绍&#xff1a;Claude Design是Anthropic推出的一款人工智能设计工具&#xff0c;它能够通过简单的提示将你的想法转化为精美的视觉作品。你可以用它创建原型、…...

YOLOv5-face:面向实时人脸检测的优化架构与应用实践

YOLOv5-face&#xff1a;面向实时人脸检测的优化架构与应用实践 【免费下载链接】yolov5-face YOLO5Face: Why Reinventing a Face Detector (https://arxiv.org/abs/2105.12931) ECCV Workshops 2022) 项目地址: https://gitcode.com/gh_mirrors/yo/yolov5-face YOLOv5…...

zmq源码分析之io_thread_t

文章目录概述继承关系核心成员构造函数启动与停止启动停止事件处理读事件处理&#xff08;核心&#xff09;其他事件&#xff08;理论上不会被调用&#xff09;停止处理架构图事件循环流程与其他组件的关系线程创建流程关键设计点命令处理类型性能特点总结概述 io_thread_t 是…...

Windows 10系统清理终极指南:让旧电脑重获新生的免费神器

Windows 10系统清理终极指南&#xff1a;让旧电脑重获新生的免费神器 【免费下载链接】Win10BloatRemover Configurable CLI tool to easily and aggressively debloat and tweak Windows 10 by removing preinstalled UWP apps, services and more. Originally based on the W…...

10年老兵带你学Java(第3课):数组和方法 - 代码的复用

本课目标 数组&#xff1a;一组数据的容器方法&#xff1a;代码的复用面向对象入门&#xff1a;类和方法的关系 上节课学了变量&#xff0c;一个变量存一个数据。 这节课学数组&#xff0c;一个变量存一组数据。还有方法&#xff0c;把代码打包成可复用的块。一、数组&#xff…...

Polkadot 技术栈地图 2026

作者&#xff1a;PokerMoon 团队 区块链项目的官网有一个通病——首页永远写得像科幻小说&#xff0c;“Tech” 页面永远写得像论文目录。Polkadot 的 /tech 页就是典型案例。你点进去&#xff0c;映入眼帘的是一连串大写字母缩写&#xff1a;JAM、PVM、Coretime、XCM、PoP………...

C语言学习日志

大家好&#xff0c;我是一名物联网工程专业的大学生&#xff0c;很高兴认识大家&#xff0c;同时这也是我的第一篇博客。1.我的编程目标&#xff1a; 学习c语言主要是为了对后面c的学习做铺垫&#xff0c;完善我的大创项目&#xff0c;为我的简历增添色彩&#xff0c;收到一份好…...

5分钟实现Windows和Linux鼠标指针美化:macOS风格光标主题完整指南

5分钟实现Windows和Linux鼠标指针美化&#xff1a;macOS风格光标主题完整指南 【免费下载链接】apple_cursor Free & Open source macOS Cursors. 项目地址: https://gitcode.com/gh_mirrors/ap/apple_cursor 你是否厌倦了Windows或Linux系统默认的单调鼠标指针&…...

计算机毕业设计:Python农产品价格与销量关联分析系统 Django框架 数据分析 可视化 大数据 大模型 机器学习(建议收藏)✅

1、项目介绍 技术栈 采用 Python 语言开发&#xff0c;基于 Django 框架搭建后端服务&#xff0c;使用 MySQL 数据库进行数据存储&#xff0c;前端结合 HTML 与 Echarts 可视化库实现数据展示。 功能模块农产品价格区间分布农产品销量分布农产品不同省份销量分布农产品…...

Cats Blender插件终极指南:如何快速将3D模型优化并导入VRChat

Cats Blender插件终极指南&#xff1a;如何快速将3D模型优化并导入VRChat 【免费下载链接】cats-blender-plugin :smiley_cat: A tool designed to shorten steps needed to import and optimize models into VRChat. Compatible models are: MMD, XNALara, Mixamo, DAZ/Poser,…...

阿贝云免费服务器

阿贝云免费虚拟主机https://www.abeiyun.com&#xff0c;点击进入&#xff0c;登录即领...

计算机毕业设计:Python农业电商销售数据分析平台 Django框架 数据分析 可视化 大数据 大模型 机器学习(建议收藏)✅

博主介绍&#xff1a;✌全网粉丝50W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战8年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ > &#x1f345;想要获取完整文章或者源码&#xff0c;或者代做&#xff0c;拉到文章底部即可与…...

【AGI蛋白质折叠预测革命】:2024年AlphaFold 3与RoseTTAFold AI实测对比,精准度突破99.2%的5大临床应用落地路径

第一章&#xff1a;AGI蛋白质折叠预测能力的范式跃迁 2026奇点智能技术大会(https://ml-summit.org) 传统蛋白质结构预测依赖于多序列比对&#xff08;MSA&#xff09;与共进化信号挖掘&#xff0c;计算密集且对低同源性蛋白失效&#xff1b;而新一代AGI驱动的折叠模型已突破…...

别再学框架了!2026奇点大会证实:未来3年高薪岗位只筛选这7种AGI协同行为模式

第一章&#xff1a;2026奇点智能技术大会&#xff1a;AGI与编程能力 2026奇点智能技术大会(https://ml-summit.org) AGI驱动的实时代码生成范式 本届大会首次公开展示了基于多模态具身推理的AGI编程代理——SingularityCoder v3.2。该系统不再依赖静态训练数据&#xff0c;而…...

ESP32上传图片到巴法云,除了HTTPClient,你还可以试试这个库

ESP32进阶方案&#xff1a;三种高效上传图片到巴法云的库对比与实践 在物联网项目中&#xff0c;ESP32作为一款高性价比的Wi-Fi/蓝牙双模芯片&#xff0c;经常被用于图像采集与传输场景。巴法云作为国内流行的物联网平台&#xff0c;提供了便捷的图片上传接口。虽然官方例程通常…...

企业云盘选型标准合同条款:数据归属/服务等级/SLA全解析

作者&#xff1a;巴别鸟技术团队 适用场景&#xff1a;IT采购、合规审查、法务评估 更新时间&#xff1a;2026-04引言&#xff1a;为什么选云盘先看合同&#xff1f; 企业选择云盘时&#xff0c;大多数人盯着功能对比、UI体验、存储价格——但真正踩过坑的IT负责人知道&#xf…...

企业云盘数据安全实战:从传输加密到存储隔离的完整方案

⚠️ 一个让人震惊的事实&#xff1a;根据OWASP 2023年报告&#xff0c;超过60%的企业数据泄露事件&#xff0c;攻击入口不是高深的黑客技术&#xff0c;而是未加密的传输层。你的企业云盘HTTP流量&#xff0c;可能正在被监听&#xff0c;而你毫不知情。 前言&#xff1a;一个价…...

Go语言怎么做地理围栏_Go语言地理位置计算教程【指南】

最稳的IP地理围栏方案是用oschwald/maxminddb-golang读取GeoLite2-City.mmdb&#xff0c;配合CF-Connecting-IP或Nginx可信IP头获取真实IP&#xff0c;白名单用map、围栏用S2库做点面判断&#xff0c;高实时场景选Tile38。用 maxminddb 查 IP 归属做围栏&#xff0c;别碰 geoip…...

如何备份大量小表组成的数据库_并行导出与多文件并发写入.txt

PHP开发无需选机箱&#xff0c;真正关键的是CPU单核性能、RAM容量和SSD读写延迟&#xff1b;生产服务器的硬件选型属于运维范畴&#xff0c;与PHP编码、调试、本地运行无关。PHP 是运行在服务器端的脚本语言&#xff0c;源码开发阶段根本不需要考虑机箱、散热或 PCIe 插槽——这…...

AGI不再依赖云巨头?深度拆解Polkadot+LLM+Verifiable Computation三栈融合架构(含GitHub Star 3.2K实证项目)

第一章&#xff1a;AGI的分布式与去中心化探索 2026奇点智能技术大会(https://ml-summit.org) 传统AGI研发范式高度依赖中心化算力集群、统一模型权重分发与集中式数据治理&#xff0c;而分布式与去中心化架构正催生新一代AGI演进路径&#xff1a;节点自治、共识驱动、价值可验…...

MySQL升级如何回滚到旧版本_灾难恢复方案与快照备份恢复.txt

text-rendering: optimizeSpeed 几乎没人用&#xff0c;因为现代浏览器&#xff08;Chrome、Firefox、Safari&#xff09;均不真正支持它&#xff0c;实际等同于 auto&#xff0c;无法实现字形简化或性能提升。text-rendering: optimizeSpeed 为什么几乎没人用因为现代浏览器基…...

UAF hacknote

hacknotep process(./hacknote, env{GLIBC_TUNABLES: glibc.malloc.tcache_count0})禁止tcache分析一下可以得到&#xff1a;查看del_note函数&#xff0c;这里只是free了两个堆&#xff0c;但并没有把*(&notelist)置空&#xff0c;即bss段上的指针依旧指向堆的地址&#…...

三步解锁Switch潜能:大气层系统从零到精通的实践指南

三步解锁Switch潜能&#xff1a;大气层系统从零到精通的实践指南 【免费下载链接】Atmosphere-stable 大气层整合包系统稳定版 项目地址: https://gitcode.com/gh_mirrors/at/Atmosphere-stable 大气层系统&#xff08;Atmosphere&#xff09;作为Nintendo Switch最稳定…...

从一道BUUCTF的SSRF题,聊聊Linux命令行那些“意想不到”的利用姿势(HITCON 2017实战复盘)

从BUUCTF SSRF题看Linux命令行的隐秘攻击面 在CTF竞赛和实际渗透测试中&#xff0c;SSRF&#xff08;服务器端请求伪造&#xff09;常被视作简单的内网探测工具&#xff0c;但2017年HITCON这道题却展示了它如何与Linux命令行特性结合&#xff0c;实现从信息泄露到远程代码执行的…...

告别VMware!用Arsenal Image Mounter在Windows里直接‘打开’取证镜像,像本地硬盘一样操作

数字取证新范式&#xff1a;Arsenal Image Mounter实战指南 在数字取证和安全分析领域&#xff0c;效率往往意味着成功的关键。想象一下这样的场景&#xff1a;你刚刚获取了一个关键的磁盘镜像文件&#xff0c;可能是.raw、.dd或.E01格式&#xff0c;里面可能包含着破解案件的…...