nodejs前端项目的CI/CD实现(二)jenkins的容器化部署
一、背景
docker安装jenkins,可能你会反问,这太简单了,有什么好讲的。
我最近就接手了一个打包项目,它是一个nodejs的前端项目,jenkins已在容器里部署且运行OK。
但是,前端组很追求新技术,不断地升级Nodejs的版本,之前是14,现在需要升级到16。
也就是说,原本运行顺畅的打包不灵了,必须得升级Nodejs才行。
我要看下文档,得知道jenkins容器的运行命令,才好去修改并重启容器。
这是我的第一反应,可也正是这个思维,导致走了不少弯路。
二、踩过的坑
1、文档少,交接中断许久
文档只有机器的密码,以及jenkins的admin超管账户的密码。
并没有交待Jenkins容器是怎么起来的,而所谓交接也中断不知多久,没人知道此时。。
2、思维定势
我的这个固定思维,导致我走了不少弯路。也正因为此,我才想把这期间遇到的问题,梳理出来,希望能够帮助到有需要的同学。
三、分析已部署的容器
主要需要知道以下信息,对于Jenkins容器来说:
- 镜像image
- volume
- 端口映射
- 环境变量
对于本文的情况来说,镜像image和端口映射是很容易看到,最重要的信息莫过于volume持久化。
当然你可以借助于docker inscept命令,我这里是使用portainer界面查看。

从下面详情,也可以看到镜像image名称,使用的就是官方镜像。

从下面的环境变量,可以看到,jenkins使用的版本是2.323。在制作自定义镜像的时候,这个信息可以帮助到我们该选择哪个版本。

四、容器化部署
从上文,我们不难倒退出目前在运行中的容器,运行脚本大致是:
docker run -d -uroot \
-p 8080:8080 \
-p 50000:50000 \
--name jenkins \
-v /opt/jenkins_home:/var/jenkins_home \
jenkins/jenkins:2.323
可是问题来了,jenkins job打包需要的那些命令和工具呢, 他们在哪?
也分为几种可能,但都没找到。
- jenkins plugin插件
- 系统管理–》全局工具设置
- 宿主机和容器做持久化映射
- 容器里安装(遗漏了这点,后果很严重)
前面三处都找了,也没找到,可偏偏遗漏了最后一处。。。因为这种方式,我自己在操作中比较忌讳。
容器一定被删除后,安装的命令和工具就都丢失了,并且对于运维来说,也是透明的。
就是说,别人并不知道你对容器具体有做什么改进,一头雾水。
1、安装方式一(不推荐)

我试着做了,但总会缺这缺那的,很难真正跑起来。
因为宿主机是centos,而jenkins容器是ubuntu操作系统。
想要在ubuntu系统里,去执行一个centos上的可执行文件,何其难也~~
因为可执行文件还依赖操作系统底层的函数及文件。
可以说,不仅不推荐,似乎本文也行不通。。
2、遗漏的方案(不科学,不推荐)

这种方式,就是拿容器当虚拟机使用,丢失了容器化的内涵和意义。
缺什么软件,你就去容器里安装,问题是简单地解决了,留给运维一堆坑。
后面接手的人不禁反问一句:如果虚拟机那么好使, 还容器化干嘛。绕来绕去,不知不觉中又绕回去了。
3、推荐的方案(也是下文要进一步描述的方案)

限于篇幅, 对jenkins的容器化部署就说到这, 见下文。。。
相关文章:
nodejs前端项目的CI/CD实现(二)jenkins的容器化部署
一、背景 docker安装jenkins,可能你会反问,这太简单了,有什么好讲的。 我最近就接手了一个打包项目,它是一个nodejs的前端项目,jenkins已在容器里部署且运行OK。 但是,前端组很追求新技术,不…...
python爬虫案例分享
当然,我可以分享一个基本的Python爬虫示例。这个示例将使用Python的requests库来抓取网页内容,然后使用BeautifulSoup库来解析和提取信息。我们将构建一个简单的爬虫来从一个示例网站抓取标题。 Python爬虫示例 目标 提取某网站的标题。 需要的库 r…...
【CC++】为什么 scanf 函数在读取字符串时不需要用取地址运算符
在C语言中如何使用 scanf 读取字符串 在C语言中,字符串实际上是字符数组,所以我们可以使用scanf函数来读取字符串。但是,需要注意的是,scanf在读取字符串时会在遇到空格、制表符或换行符时停止。因此,它不能用于读取包…...
Linux dirs命令教程:dirs命令详解与实例(附实例详解和注意事项)
Linux dirs命令介绍 dirs这是一个内置在shell中的命令,用于显示当前被记忆的目录列表。默认状态下,它会按照stack的方式储存目录,即最后加入的目录会被首先列出来。 Linux dirs命令适用的Linux版本 dirs命令在所有常见的Linux发行版中都适…...
掌握虚拟化:PVE平台安装教程与技术解析
🌟🌌 欢迎来到知识与创意的殿堂 — 远见阁小民的世界!🚀 🌟🧭 在这里,我们一起探索技术的奥秘,一起在知识的海洋中遨游。 🌟🧭 在这里,每个错误都…...
Godot FileDialog无法访问其它盘符的文件
问题描述 使用Godot的FileDialog对象访问Windows系统的文件,例如: func _on_hud_sig_save():var dlg FileDialog.new()dlg.set_access(FileDialog.ACCESS_FILESYSTEM)dlg.set_file_mode(FileDialog.FILE_MODE_SAVE_FILE)add_child(dlg)dlg.popup_cent…...
TestNG注释
目录 TestNG注释列表 BeforeXXX和AfterXXX注释放在超类上时如何工作? 使用BeforeXXX和AfterXXX TestNG注释 TestNG是一个测试框架,旨在简化广泛的测试需求,从单元测试(隔离测试一个类)到集成测试(测试由…...
数据预处理 matlab 数据质量评估
知乎 数据类型转换等 Mathworks 数据预处理 概念辨析 配对是同一批样本的前后比较,独立是两批不同样本的的比较 独立样本是指我们得到的样本是相互独立的。配对样本就是一个样本中的数据与另一个样本中的数据相对应的两个样本。配对样本可以消除由于样本指定的不公…...
对象存储, 开源MinIO docker-compose.yml 文件
文章目录 python SDK 文档地址:docker-compose.yml 文件控制台使用:应用服务中使用样例: python SDK 文档地址: https://min.io/docs/minio/linux/developers/python/API.html docker-compose.yml 文件 version: 3services:min…...
爬虫笔记(一):实战登录古诗文网站
需求:登录古诗文网站,账号+密码+图形验证码 第一:自己注册一个账号+密码哈 第二:图形验证码,需要一个打码平台(充钱,超能力power!)或…...
适用于 Windows 11 的 12 个最佳免费 PDF 编辑器
除了绘图等基本功能外,一些适用于 Windows 11 的免费 PDF 编辑器还具有 AI、OCR 识别和书签等高级功能。 我们的列表包含易于立即下载的 PDF 编辑软件工具。 这些工具不仅可以帮助转换 PDF、编辑、上传、删除、裁剪、分割、提取等。 PDF 是指便携式文档格式&…...
力扣每日一练(24-1-18)
经验一:不要把问题想复杂 Python: min_price float(inf)max_profit 0for price in prices:min_price min(min_price, price)max_profit max(max_profit, price - min_price)return max_profit C#: public int MaxProfit(int[] prices) {i…...
MyBatis 使用报错:org.xml.sax.SAXParseException 元素内容必须由格式正确的字符数据或标记组成
文章目录 前言问题分析解决方案方案一:使用 CDATA 区块,依然使用 “ > ” 或者 “ < ”方案二:使用转义字符 个人简介 前言 今天在使用 MyBatis 时出现报错: Caused by: org.xml.sax.SAXParseException: 元素内容必须由格式…...
PDF.js - 免费开源的 JavaScript 读取、显示 PDF 文档的工具库,由 Mozilla 开发并且持续维护
最近新项目需要处理 PDF,研究了 PDf.js 之后觉得很不错,于是写篇文章推荐给大家。 PDF.js 的功能和它的名字一样简单,是一个使用 HTML5 技术来让前端网页支持读取、解析和显示 PDF 文档的 JS 工具库。这个项目由大名鼎鼎的 Mozilla 组织开发…...
UI开发布局-HarmonyOS应用UI开发布局
UI页面的构建不用再像Android开发过程中在.xml文件中书写,可直接在页面上使用声明式UI的方式按照布局进行排列,构建应用的页面。 如下代码使用Row、Column构建一个页面布局,在页面布局中添加组件Text、Button,共同构成页面&#…...
大数据开发之Hadoop(完整版+练习)
第 1 章:Hadoop概述 1.1 Hadoop是什么 1、Hadoop是一个由Apache基金会所开发的分布式系统基础架构。 2、主要解决,海量数据的存储和海量数据的分析计算问题。 3、Hadoop通常是指一个更广泛的概念-Hadoop生态圈 1.2 Hadoop优势(4高…...
Redis与DB数据一致性-个人总结
缓存读写策略: Cache-Aside Pattern 读缓存: 先查询缓存,存在则返回, 如果不存在则查询DB, 再塞回缓存中,最后返回结果. 写缓存: 更新完成DB之后,删除缓存. 适合场景: 读比较多的场景,更新比较少的场景. 像我们工作当中&#…...
VMware workstation安装debian-12.1.0虚拟机(最小化安装)并配置网络
VMware workstation安装debian-12.1.0虚拟机(最小化安装)并配置网络 Debian 是一个完全自由的操作系统!Debian 有一个由普罗大众组成的社区!该文档适用于在VMware workstation平台安装最小化安装debian-12.1.0虚拟机。 1.安装准…...
SG-9101CGA(汽车+125°C可编程晶体振荡器)
SG-9101CGA是用于汽车CMOS输出的可编程晶体振荡器,彩用2.5 x 2.0 (mm)封装,0.67 MHz至170 MHz频率范围、工作温度范围为-40℃~125℃,符合车规级晶振,无铅,绿色环保,满足汽车工业标准,电源电压范…...
第十五届蓝桥杯单片机组备赛——独立键盘矩阵键盘
文章目录 一、按键原理二、独立键盘&矩阵键盘2.1 独立按键2.2 矩阵键盘2.2.1 列扫描2.2.2 行扫描2.2.3 代码实现(行扫描实现) 三、矩阵键盘注意事项3.1 为什么要设置C1C2C3C413.2 按键消抖 一、按键原理 原理很简单,当我们没有按下SW2时,由于上拉电阻…...
Flink SQL CDC避坑指南:为什么你的Debezium源表总是漏数据?
Flink SQL CDC数据一致性实战:从Debezium陷阱到高可靠架构设计 在电商大促秒杀和金融交易风控这类对数据一致性要求严苛的场景中,Flink CDC已成为实时数仓建设的核心组件。但当你在凌晨三点收到报警通知,发现订单宽表丢失了关键字段时&#x…...
新手也能懂:用Altium Designer搞定SPI Flash、eMMC和USB3.0的PCB等长与阻抗控制
Altium Designer实战:SPI Flash、eMMC与USB3.0的等长布线及阻抗控制指南 刚接触高速PCB设计时,面对密密麻麻的规则手册总让人望而生畏。3H原则、500mil误差、阻抗匹配这些术语听起来像天书,但当你用Altium Designer(AD)…...
拯救变砖的STM32:利用BOOT0/1组合实现三种烧录救机方案(含串口/JTAG异常处理)
STM32紧急救援指南:BOOT引脚组合的三种烧录方案与异常处理实战 引言:当STM32突然"变砖"时 深夜的实验室里,王工盯着眼前毫无反应的STM32开发板,额头渗出细密的汗珠——距离项目交付只剩12小时,核心控制程序却…...
Lingyuxiu MXJ LoRA开源镜像指南:从下载到生成的完整开箱即用流程
Lingyuxiu MXJ LoRA开源镜像指南:从下载到生成的完整开箱即用流程 1. 项目简介 Lingyuxiu MXJ LoRA 是一款专门为生成唯美真人风格人像而设计的轻量级AI图像生成系统。这个项目最大的特点就是针对人像摄影进行了深度优化,能够生成五官精致、光影柔和、…...
从零上手平头哥剑池CDK:手把手教你搭建第一个RISC-V调试工程(附断点设置技巧)
从零上手平头哥剑池CDK:手把手教你搭建第一个RISC-V调试工程(附断点设置技巧) 第一次接触RISC-V架构和平头哥的开发环境,难免会有些无从下手。作为一个过来人,我清楚地记得当初为了跑通第一个调试工程,花了…...
从AMP到cuFFT:半精度训练中非2的幂维度问题的深度解析与实战规避
1. 从报错信息看半精度训练中的cuFFT限制 最近在调试一个深度学习模型时,遇到了这样的报错:"RuntimeError: cuFFT only supports dimensions whose sizes are powers of two when computing in half precision"。这个错误看似简单,…...
电源管理入门-5 arm-scmi和mailbox核间通信
上篇介绍了电源管理入门-4子系统reset,提到子系统reset的执行为了安全可以到SCP里面去执行,但是怎么把这个消息传递过去呢,答案就是mailbox。Mailbox是核间通信软硬件的统称。在软件上可以使用SCMI协议共享内存报文头,在硬件上可以…...
深度学习环境搭建不再难:PyTorch 2.6镜像快速部署指南
深度学习环境搭建不再难:PyTorch 2.6镜像快速部署指南 1. 为什么选择PyTorch 2.6镜像 PyTorch作为当前最流行的深度学习框架之一,其2.6版本带来了显著的性能提升和新特性。但对于初学者来说,从零开始配置PyTorch环境往往面临诸多挑战&#…...
2026年,山东专业联想服务器解决方案,涵盖SR858 V3等众多型号!
在当今数字化飞速发展的时代,服务器作为企业数据处理和存储的核心设备,其性能和可靠性至关重要。联想服务器凭借其卓越的性能、丰富的功能和广泛的应用场景,成为众多企业的首选。今天,我们就来详细了解一下联想SR858 V3服务器。联…...
嘉立创PCB打样被加价到170元?手把手教你用STM32H743飞控板案例解决‘拆单嫌疑’
STM32H743飞控板PCB打样避坑指南:如何巧妙应对嘉立创拆单判定 最近不少硬件开发者在使用嘉立创进行STM32H743飞控板PCB打样时,遇到了一个令人头疼的问题——原本33元的4层板打样价格突然飙升到170多元。这种情况往往是由于平台算法误判设计文件存在"…...
