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

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 元素内容必须由格式正确的字符数据或标记组成

文章目录 前言问题分析解决方案方案一&#xff1a;使用 CDATA 区块&#xff0c;依然使用 “ > ” 或者 “ < ”方案二&#xff1a;使用转义字符 个人简介 前言 今天在使用 MyBatis 时出现报错&#xff1a; Caused by: org.xml.sax.SAXParseException: 元素内容必须由格式…...

PDF.js - 免费开源的 JavaScript 读取、显示 PDF 文档的工具库,由 Mozilla 开发并且持续维护

最近新项目需要处理 PDF&#xff0c;研究了 PDf.js 之后觉得很不错&#xff0c;于是写篇文章推荐给大家。 PDF.js 的功能和它的名字一样简单&#xff0c;是一个使用 HTML5 技术来让前端网页支持读取、解析和显示 PDF 文档的 JS 工具库。这个项目由大名鼎鼎的 Mozilla 组织开发…...

UI开发布局-HarmonyOS应用UI开发布局

UI页面的构建不用再像Android开发过程中在.xml文件中书写&#xff0c;可直接在页面上使用声明式UI的方式按照布局进行排列&#xff0c;构建应用的页面。 如下代码使用Row、Column构建一个页面布局&#xff0c;在页面布局中添加组件Text、Button&#xff0c;共同构成页面&#…...

大数据开发之Hadoop(完整版+练习)

第 1 章&#xff1a;Hadoop概述 1.1 Hadoop是什么 1、Hadoop是一个由Apache基金会所开发的分布式系统基础架构。 2、主要解决&#xff0c;海量数据的存储和海量数据的分析计算问题。 3、Hadoop通常是指一个更广泛的概念-Hadoop生态圈 1.2 Hadoop优势&#xff08;4高&#xf…...

Redis与DB数据一致性-个人总结

缓存读写策略: Cache-Aside Pattern 读缓存: 先查询缓存&#xff0c;存在则返回, 如果不存在则查询DB, 再塞回缓存中,最后返回结果. 写缓存: 更新完成DB之后&#xff0c;删除缓存. 适合场景: 读比较多的场景&#xff0c;更新比较少的场景. 像我们工作当中&#…...

VMware workstation安装debian-12.1.0虚拟机(最小化安装)并配置网络

VMware workstation安装debian-12.1.0虚拟机&#xff08;最小化安装&#xff09;并配置网络 Debian 是一个完全自由的操作系统&#xff01;Debian 有一个由普罗大众组成的社区&#xff01;该文档适用于在VMware workstation平台安装最小化安装debian-12.1.0虚拟机。 1.安装准…...

SG-9101CGA(汽车+125°C可编程晶体振荡器)

SG-9101CGA是用于汽车CMOS输出的可编程晶体振荡器&#xff0c;彩用2.5 x 2.0 (mm)封装&#xff0c;0.67 MHz至170 MHz频率范围、工作温度范围为-40℃~125℃&#xff0c;符合车规级晶振&#xff0c;无铅&#xff0c;绿色环保&#xff0c;满足汽车工业标准&#xff0c;电源电压范…...

第十五届蓝桥杯单片机组备赛——独立键盘矩阵键盘

文章目录 一、按键原理二、独立键盘&矩阵键盘2.1 独立按键2.2 矩阵键盘2.2.1 列扫描2.2.2 行扫描2.2.3 代码实现(行扫描实现) 三、矩阵键盘注意事项3.1 为什么要设置C1C2C3C413.2 按键消抖 一、按键原理 原理很简单&#xff0c;当我们没有按下SW2时&#xff0c;由于上拉电阻…...

手把手教你用Coze搭个‘论文小助理’:自动摘要、分类,还能给同组同学发Telegram周报

科研团队效率革命&#xff1a;用Coze构建智能论文协作系统 想象一下这样的场景&#xff1a;周五下午&#xff0c;当你的实验室成员正准备结束一周工作时&#xff0c;每个人的手机同时收到一条Telegram消息——本周团队收集的17篇前沿论文已自动完成摘要提取、关键词标记和分类存…...

Matlab数字图像处理核心项目实践:包含直方图均衡、空间过滤器增强、傅立叶变换与频域滤波、噪...

Matlab数字图像处理 包含以下内容&#xff1a; 项目 1&#xff1a;直方图均衡 项目 2&#xff1a;使用空间过滤器增强图像 项目 3&#xff1a;频域中的傅立叶变换和滤波 项目 4&#xff1a;噪声模型和降噪 项目 5&#xff1a;使用逆滤波器和维纳滤波器进行图像恢复 项目 6&…...

如何让数学公式编辑达到手写速度:Obsidian LaTeX Suite深度解析

如何让数学公式编辑达到手写速度&#xff1a;Obsidian LaTeX Suite深度解析 【免费下载链接】obsidian-latex-suite Make typesetting LaTeX as fast as handwriting through snippets, text expansion, and editor enhancements 项目地址: https://gitcode.com/gh_mirrors/o…...

小型物联网系统——家居网关设计(C语言实现)

一、系统概述 家居网关是小型物联网系统的核心枢纽&#xff0c;负责多协议设备接入、数据汇聚转发、本地/远程控制三大核心功能。本设计基于STM32F103C8T6主控&#xff0c;集成Zigbee&#xff08;传感器接入&#xff09;、Wi-Fi&#xff08;云端通信&#xff09;、GPIO&#xf…...

Quartus II 13.1 NCO IP核调用失败?可能是这两个坑你没注意(附详细license配置指南)

Quartus II 13.1 NCO IP核调用深度排障指南&#xff1a;从环境配置到授权管理 1. 环境准备&#xff1a;Java运行时环境的隐形陷阱 在FPGA开发中&#xff0c;数字控制振荡器&#xff08;NCO&#xff09;IP核是实现高精度频率合成的关键组件。然而&#xff0c;当你在Quartus II 1…...

保姆级教程:在Android项目中集成微信Matrix性能监控框架(含避坑指南)

Android性能监控实战&#xff1a;微信Matrix框架深度集成指南 在移动应用开发领域&#xff0c;性能优化始终是开发者面临的核心挑战之一。微信开源的Matrix框架作为一套全平台性能监控工具链&#xff0c;为Android开发者提供了从方法耗时、ANR检测到内存泄漏分析等全方位的监控…...

三步解决Windows 11卡顿难题:开源工具Win11Debloat让系统效率提升3倍

三步解决Windows 11卡顿难题&#xff1a;开源工具Win11Debloat让系统效率提升3倍 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to de…...

多智能体AI交易系统技术落地实践:从架构设计到生产部署

多智能体AI交易系统技术落地实践&#xff1a;从架构设计到生产部署 【免费下载链接】TradingAgents-CN 基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版 项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN 在金融科技快速发展的今天&am…...

GitHub下载加速终极指南:3分钟让你的克隆速度提升100倍

GitHub下载加速终极指南&#xff1a;3分钟让你的克隆速度提升100倍 【免费下载链接】Fast-GitHub 国内Github下载很慢&#xff0c;用上了这个插件后&#xff0c;下载速度嗖嗖嗖的~&#xff01; 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 如果你经常需要…...

终极指南:5分钟掌握TegraRcmGUI Switch注入工具的核心能力

终极指南&#xff1a;5分钟掌握TegraRcmGUI Switch注入工具的核心能力 【免费下载链接】TegraRcmGUI C GUI for TegraRcmSmash (Fuse Gele exploit for Nintendo Switch) 项目地址: https://gitcode.com/gh_mirrors/te/TegraRcmGUI TegraRcmGUI是一款专为Nintendo Switc…...