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

【日常小问】解决 Jenkins 部署 Spring Cloud 微服务到 Docker 容器启动失败的问题

一、问题出现在使用 Jenkins 进行 CI/CD 部署 Spring Cloud 微服务项目时遇到了一个让人头疼的问题所有通过 Jenkins 构建的 Docker 容器启动后立即退出状态码为Exited (1)。查看容器日志报错信息如下*************************** APPLICATION FAILED TO START *************************** Description: Failed to configure a DataSource: url attribute is not specified and no embedded datasource could be configured. Reason: Failed to determine a suitable driver class看起来是数据库配置没有加载到但奇怪的是同样的项目在其他人的电脑上可以正常运行唯独到了我的环境就各种报错。二、问题原因经过一番排查发现这个问题其实是三个独立的问题叠加导致的2.1 Docker 网络不通项目的各个微服务Nacos、MySQL、Redis 等部署在同一个 Linux 虚拟机的 Docker 中但它们分布在不同的 Docker 网络里容器所在网络说明Nacos、MySQL、Redistjxt手动部署时创建的网络Jenkins 构建的应用容器heima-net启动脚本中指定的网络两个网络互相隔离导致应用容器根本访问不到 Nacos 和 MySQL。2.2 Nacos 认证信息缺失项目使用了 Spring Cloud Alibaba Nacos 作为配置中心和服务注册发现中心。但bootstrap.yml中没有配置 Nacos 的地址和认证信息默认使用localhost:8848。在 Docker 容器中localhost指向的是容器自己而不是宿主机的 Nacos 服务。即使网络通了没有正确的地址和认证信息也无法连接。2.3 共享配置位置错误在修改bootstrap.yml添加 Nacos 配置时不小心把shared-configs共享配置放在了discovery服务发现下面而不是config配置中心下面。这导致应用虽然能连接 Nacos但无法加载共享的数据库配置。# ❌ 错误的结构 spring: cloud: nacos: config: server-addr: 192.168.150.101:8848 username: nacos password: nacos file-extension: yaml discovery: server-addr: 192.168.150.101:8848 username: nacos password: nacos shared-configs: # ❌ 放在 discovery 下面不会被加载 - data-id: shared-mybatis.yaml refresh: false三、解决问题3.1 解决 Docker 网络问题方法一修改 Jenkins 启动脚本推荐编辑/usr/local/src/script/startup.sh将--network heima-net改为--network tjxt# 修改前 --network heima-net ${IMAGE_NAME} \ # 修改后 --network tjxt ${IMAGE_NAME} \方法二手动连接网络如果不想修改脚本也可以手动将容器连接到正确的网络docker network connect tjxt tj-user docker network connect tjxt tj-trade docker restart tj-user tj-trade3.2 配置 Docker 镜像加速器在国内网络环境下Docker Hub 经常超时。配置镜像加速器可以显著提升拉取镜像的速度sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json -EOF { registry-mirrors: [ https://docker.1ms.run, https://docker.xuanyuan.me ] } EOF sudo systemctl daemon-reload sudo systemctl restart docker3.3 添加 Nacos 认证配置在每个微服务的bootstrap.yml中添加 Nacos 的地址和认证信息。注意shared-configs必须在config下面spring: cloud: nacos: config: server-addr: 192.168.150.101:8848 username: nacos password: nacos file-extension: yaml shared-configs: # ✅ 正确位置在 config 下面 - data-id: shared-spring.yaml refresh: false - data-id: shared-redis.yaml refresh: false - data-id: shared-mybatis.yaml refresh: false - data-id: shared-logs.yaml refresh: false - data-id: shared-feign.yaml refresh: false discovery: server-addr: 192.168.150.101:8848 username: nacos password: nacos为什么需要配置两份认证Nacos 在 Spring Cloud 中承担了两个角色配置中心Config存储和管理配置文件应用启动时从这里拉取数据库、Redis 等配置服务注册发现Discovery服务启动时注册自己的地址让其他服务能找到自己两个功能是独立的请求所以需要分别配置认证信息。3.4 重新构建部署完成以上修改后将代码提交到 Gogs删除旧的 Docker 容器和镜像重新触发 Jenkins 构建# 删除旧容器和镜像 docker rm -f tj-user tj-trade docker rmi tj-user:latest tj-trade:latest四、总结这次问题的根本原因是环境差异在 IDE 中直接运行时localhost指向宿主机Nacos 认证信息可以通过其他方式注入但在 Docker 容器中网络隔离和配置缺失的问题被放大了。排查这类问题的思路是先看日志docker logs 容器名是最直接的排查手段分层排查网络 → 连接 → 认证 → 配置逐层检查对比差异和能正常运行的环境对比找出配置差异希望这篇文章能帮到遇到类似问题的朋友。

相关文章:

【日常小问】解决 Jenkins 部署 Spring Cloud 微服务到 Docker 容器启动失败的问题

一、问题出现在使用 Jenkins 进行 CI/CD 部署 Spring Cloud 微服务项目时,遇到了一个让人头疼的问题:所有通过 Jenkins 构建的 Docker 容器启动后立即退出,状态码为 Exited (1)。查看容器日志,报错信息如下:**********…...

基于 base-admin 人事管理系统开源项目学习与功能扩展实战笔记

最近跟着课程实战拆解了base-admin 人事管理系统开源项目,这是一款基于 SpringBoot 搭建的企业级后台管理平台,遵循 Apache 2.0 开源协议,非常适合 Java 后端和软件工程入门练手。项目整体采用经典三层架构,Controller、Service、…...

参考文献列表(近现代当代中国篇)

参考文献列表(近现代当代中国篇)0. 无。为什么是空的?——因为鄙视。岐金兰鄙视近现代当代中国绝大多数思想者。不是个人恩怨,不是学术门户,而是对“构建学术实体”这一集体执念的鄙视。他们中的大多数,终其…...

STM32F4的DSP库怎么在CLion里用起来?保姆级CMake配置指南(含FPU开启)

STM32F4的DSP库在CLion中的完整CMake配置指南(含FPU优化) 第一次在CLion里看到STM32的DSP库报错时,我盯着满屏的"undefined reference"发了半小时呆。作为从Keil转战CLion的老嵌入式开发者,我太清楚DSP库在信号处理项目…...

AXI4协议实战:从零构建一个支持突发传输的从机接口

1. AXI4协议基础与从机接口设计概述 AXI4协议作为AMBA总线家族中最核心的成员,已经成为现代SoC设计中事实上的标准互联规范。我第一次接触AXI4是在2015年设计图像处理芯片时,当时为了连接DMA控制器和DDR控制器,不得不硬着头皮研究这个看似复杂…...

聊聊我是怎么用Claude code来学习项目的吧

首先我和许多大学生一样我对项目这个的概念理解为零,但是我比较喜欢研究ai,我喜欢用ai去帮我写一些小项目啊,小游戏啊,还有一些脚本,像一些国外的cursor,国内的treat,还有Claude code我基本都玩…...

快图设计:5个理由告诉你为什么这款Vue图片编辑器值得尝试

快图设计:5个理由告诉你为什么这款Vue图片编辑器值得尝试 【免费下载链接】vue-fabric-editor 快图设计-基于fabric.js和Vue的开源图片编辑器,可自定义字体、素材、设计模板。fabric.js and Vue based image editor, can customize fonts, materials, de…...

C++异步日志系统

文章目录异步日志系统1. 项目背景2. 设计思路2.1 核心架构2.2 关键技术点3. 实现细节3.1 线程安全的日志队列 (LogQueue)3.2 动态格式化与回退机制 (formatMessage)3.3 自动化管理4. 接口说明日志级别 (LogLevel)核心方法5. 使用指南5.1 快速上手5.2 注意事项6. 总结7.Code异步…...

隐藏在闲鱼暗网的暴利生意

今天想跟大家说个颠覆认知的事儿——你平时用来卖旧衣服、砍价包邮的闲鱼,其实还有一张脸,那张脸长什么样呢?我管它叫“成年人最隐秘的交易所”。 你敢信吗?有人在那儿卖了10万单,一单实物都不发,纯利润&am…...

免费开源网盘直链下载工具:八大主流网盘完整使用指南

免费开源网盘直链下载工具:八大主流网盘完整使用指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云…...

Error response from daemon: client version 1.52 is too new. Maximum supported API version is 1.43

按照习惯,输入“docker ps”查看一下容器,结果给我来个这个错误:Error response from daemon: client version 1.52 is too new. Maximum supported API version is 1.43查了一下原因:这是因为使用云构建安装的默认 Docker 守护程…...

DNS 服务器学习笔记:核心总结与实验指南

DNS 服务器学习笔记:核心总结与实验指南 📌 一、文章核心重点总结 1. DNS 基础知识 什么是 DNS? DNS(Domain Name System,域名系统)是互联网的“电话簿”,负责将人类易记的域名(如 w…...

Vivado HLS数据流优化技术与FPGA性能提升实践

1. Vivado HLS数据流优化核心原理 在FPGA设计领域,数据流优化是提升系统性能的关键技术。传统FPGA开发需要手动设计数据路径和状态机,而Vivado HLS的数据流优化允许我们在C/C抽象层级实现高性能设计。其核心思想是将算法分解为多个独立阶段,通…...

LLMs之Benchmarks:《ProgramBench: Can Language Models Rebuild Programs From Scratch?》翻译与解读

LLMs之Benchmarks:《ProgramBench: Can Language Models Rebuild Programs From Scratch?》翻译与解读 导读:ProgramBench 把软件工程 agent 的评测从“局部修补”推进到“从零重建程序”,通过程序文档、行为级测试和 agent-driven fuzzing …...

小型嵌入式系统开发流程与实践指南

1. 小型嵌入式系统开发流程概述在嵌入式系统开发领域,一个结构化的软件开发流程往往是项目成功的关键因素。与通用计算机软件开发不同,嵌入式系统通常具有资源受限、实时性要求高、硬件依赖性强等特点,这使得开发流程的设计需要特别考虑这些约…...

CoPaw智能体工厂:基于三层策略与安全协议的自动化创建工具

1. 项目概述:一个为CoPaw智能体平台量身定制的“智能体工厂”如果你正在使用CoPaw(或者更广为人知的AgentScope)来构建和管理你的AI智能体,那么你肯定遇到过这样的场景:每次想创建一个新的智能体工作区(wor…...

当出海合规压力持续上升时,多云服务容易忽略哪些细节

摘要:本文梳理出海企业多云架构的完整成本构成,拆解显性运营成本与极易被忽视的隐性成本陷阱,结合当下全球数据合规趋严的行业趋势,分析多云服务落地的成本变化逻辑,为大中小不同规模的出海团队,提供科学、…...

家政派单小程序源头厂家

随着现代生活节奏的加快,家政服务的需求日益增长。为了满足这一需求,许多公司开始推出家政派单小程序,以提供更便捷、高效的服务体验。然而,在众多的选择面前,如何找到一家真正能够满足自身业务需求的源头厂家呢&#…...

OpenClaw + Claude Code 插件:多 Agent 协作开发,到底解决了什么,没解决什么?

先说结论多 Agent Council 适合复杂项目,但简单任务直接用 CLI 更高效。混合引擎能发挥不同模型优势,但协调成本和 API 费用不容忽视。持久会话和工具 API 提升了开发体验,但需注意 API Key 计费而非订阅额度。从实际选型角度,拆解…...

报名CSGO/steam游戏搬砖项目前,这些内幕一定要了解

我相信大多数人都经常困惑于一件事,那就是每当想交钱报名某个项目的时候,却发现网上做这个项目的团队很多,一家比一家会吹,一家比一家牛B,着实很难抉择到底选哪家。生怕报名了后迎接自己的就是一个深不见底的黑洞&…...

告别龟速下载!用阿里云镜像和离线包5分钟搞定DBeaver所有JDBC驱动

告别龟速下载!用阿里云镜像和离线包5分钟搞定DBeaver所有JDBC驱动 每次打开DBeaver准备连接数据库,最让人抓狂的就是等待JDBC驱动下载的进度条。特别是在某些网络环境下,一个简单的MySQL驱动下载可能需要十几分钟,甚至直接失败。作…...

Python: Condition Variable Pattern

项目结构: # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Condition Variable Pattern 条件变量模式 # Author : geovindu,Geovin Du …...

AI时代下,泳装行业的内容竞争正在被重新定义

北京先智先行科技有限公司持续推进人工智能产业应用,构建了“先知大模型”“先行 AI 商学院”“先知 AIGC 超级工场”三大核心产品体系,并围绕先知大模型私有化部署、先知 AIGC 超级工场、AI 训练师、先知人力资源服务、先知产业联盟等核心业务方向&…...

JAVA学习之JAVASE基础

集合列表ListArrayList利用空参创建的集合,在底层创建一个默认长度为0的数组添加第一个元素时,底层会创建一个新的长度为10的数组存满时,会扩容1.5倍一次存多个元素,1.5倍还不够,则新创建的数组长度以实际为准LinkedLi…...

【2026年携程暑期实习- 5月10日-第四题-单数组交换】(题目+思路+JavaC++Python解析+在线测试)

题目内容 游游有两个长度同为 nnn 的整数数组 aaa 和 bbb。她会对数组...

ai llm训练数据合成说明

一、推理服务 使用llamacpp做本地推理服务,使用gguf加gpu加速。 模型使用Jackrong/Qwen3.5-9B-Claude-4.6-Opus-Reasoning-Distilled-GGUF llama-server.exe -m .\Qwen3.5-9B.Q4_K_M.gguf -ngl 99 -c 4096 --host 0.0.0.0 --port 8080 --parallel 4 -np …...

如何用Untrunc开源工具快速修复损坏视频:完整操作指南

如何用Untrunc开源工具快速修复损坏视频:完整操作指南 【免费下载链接】untrunc Restore a damaged (truncated) mp4, m4v, mov, 3gp video. Provided you have a similar not broken video. 项目地址: https://gitcode.com/gh_mirrors/unt/untrunc 你是否曾…...

FuSa DFMEA在芯片验证中的借鉴价值

功能安全(Functional Safety, FuSa)领域的DFMEA(Design Failure Mode and Effects Analysis,设计失效模式与影响分析)是一种以预防为主的系统化、结构化风险管理方法,它通过分析失效模式并优化来降低风险。…...

带式输送机托辊移动集声故障诊断与多普勒校正【附仿真】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅如需沟通交流,点击《获取方式》 (1)锥麦移动集声采集策略与声学仿真分析: 针…...

Diablo Edit2:暗黑破坏神2角色编辑器完全指南,3步打造完美游戏体验

Diablo Edit2:暗黑破坏神2角色编辑器完全指南,3步打造完美游戏体验 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 你是否曾经在暗黑破坏神2中花费数十小时刷装备却一无所获…...