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的容器化部署就说到这, 见下文。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/634893.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中小企业股权质押融资(下)

股权质押融资的主要风险 由于股权资产的特殊性,较固定资产抵押和质押、第三方担保等方式,股权质押融资风险易受企业经营状况等因素的影响,主要包括股权价值下跌的风险、股权质押的道德风险、股权处置风险以及现行法律不完善导致的法律风险。…

前端面试题汇总大全(含答案)-- 持续更新

​一、HTML 篇 1. 简述一下你对 HTML 语义化的理解? 用正确的标签做正确的事情。 html 语义化让页面的内容结构化,结构更清晰,便于对浏览器、搜索引擎解析;即使在没有样式 CSS 情况下也以一种文档格式显示,并且是容易…

学习Spring的第八天

先对自定义类使用MyComponet的注解,在设置这个MyComponet的的属性(一个 interface接口),然后,扫描(BaseClassScanUtils.java执行,这文件不重要)当前包下是否有这个注解的类,再用MyComponentBeanFactoryPostProcessor.java(后工厂…

AI智能绘图,触手可及的未来

AI智能绘图不仅仅是技术的体现,更是对人类情感的共鸣。它能够根据用户的描述或情感需求,自动生成与之相匹配的画作。它们或细腻如丝,或磅礴如海,或温婉如诗,或激昂如歌,而这正是AI智能绘图的魅力所在。 所…

bgp基础实验

最终实验效果: 全网可达:R1,R7路由表都有r1-r7环回,R1汇总0.0/22和1.0/24,R7另一环回172.16.2.1/32 用tracert命令来R1 ping R7环回,实现全网通 实现代码: 首先配置好接口ip和环回,然后: [r1] rip 1 version 2 network 1.0.0.0 network 12.0.0.0 network 192.168.1.0 …

顶顶通呼叫中心中间件如何实现自己呼叫自己并且放音:一步步配置(mod_cti基于FreeSWITCH)

介绍 顶顶通呼叫中心中间件如何实现自己呼叫自己并且放音:一步步配置 一、配置acl.conf 打开ccadmin-》点击配置文件并且打开acl.conf-》配置好了点击提交XML。 注意:acl.conf的服务器IP必须是内网IP 添加了之后在运维调试输入reloadacl 在运维调试执…

【NVIDIA】Jetson Orin Nano系列:安装 Qt6、firefox、jtop、flameshot

1、使用命令安装 sudo apt install qtcreator sudo apt install qt6-* sudo apt install libqt6* sudo apt install qml-qt6 sudo apt install qmlscene-qt6 sudo apt install assistant-qt6 sudo apt install designer-qt62、启动 qtcreator 3、常用工具安装 sudo apt in…

MyBatis 使用报错:org.xml.sax.SAXParseException 元素内容必须由格式正确的字符数据或标记组成

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

目标文献分析方法

如何正确选题&#xff1f; 不仅仅是题目&#xff0c;而是研究工作的起步选题步骤&#xff1f; 发现问题选择方向调查研究分析论证确定选题 中国知网 深度学习方向词 1检索&#xff1a;深度学习 医疗影像 1 发表时间要最新 2 显示50个&#xff0c;全选 3 导出文献格式Ref 4 导…

SpringCloud Aliba-Sentinel【中篇】-从入门到学废【5】

目录 1.流控规则 2. 熔断规则 3.热点规则 1.流控规则 1.资源名&#xff1a;唯一名称&#xff0c;默认请求路径 2.针对来源: Sentinel可以针对调用者进行限流,填写微服务名,默认default (不区分来源) 3.阈值类型/单机阈值&#xff1a; QPS&#xff08;每秒钟的请求数量&…

高光谱分类论文解读分享之HybridSN:基于 3-D–2-D CNN 的高光谱分类(经典回顾)

IEEE GRSL 2019&#xff1a;HybridSN&#xff1a;基于 3-D–2-D CNN 的高光谱分类 题目 HybridSN: Exploring 3-D–2-D CNN Feature Hierarchy for Hyperspectral Image Classification 作者 Swalpa Kumar Roy, Student Member, IEEE, Gopal Krishna, Shiv Ram Dubey , Mem…

探秘网络爬虫的基本原理与实例应用

1. 基本原理 网络爬虫是一种用于自动化获取互联网信息的程序&#xff0c;其基本原理包括URL获取、HTTP请求、HTML解析、数据提取和数据存储等步骤。 URL获取&#xff1a; 确定需要访问的目标网页&#xff0c;通过人工指定、站点地图或之前的抓取结果获取URL。 HTTP请求&#…

python有哪些解释器?

Python的解释器有&#xff1a; CPython&#xff1a;官方的Python解释器&#xff0c;使用C语言实现。Jython&#xff1a;运行在Java平台上的Python解释器&#xff0c;使用Java语言实现。IronPython&#xff1a;运行在.NET平台上的Python解释器&#xff0c;使用C#语言实现。PyPy…

深度学习从入门到不想放弃-6

这节要讲完距离基础部分就真完事了,不继续在基础中求得基础了,我发现也没人看 书接前文深度学习从入门到不想放弃-5 (qq.com) 前文书写到要合理的设计特征是什么概念,我们再拿两个例子复习一下 比如一个卖车网站,上节我们讲过对物体识别可以用RGB来表示颜色的维度,…

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

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

linux云服务器 如何将数据盘挂载到系统盘上面?

先认识认识下面几个常用命令 lsblk 命令&#xff1a;查看设备列表&#xff0c;也就是能看到系统盘和数据盘一般为&#xff1a;vda&#xff08;系统盘&#xff09;、vdb&#xff08;数据盘&#xff09;等等 lsblk"ls" 是 "list" 的缩写&#xff1a; lsblk…

【C语言深度剖析——第四节(关键字4)】《C语言深度解剖》+蛋哥分析+个人理解

追求本质&#xff0c;不断进步 本文由睡觉待开机原创&#xff0c;转载请注明出处。 本内容在csdn网站首发 欢迎各位点赞—评论—收藏 如果存在不足之处请评论留言&#xff0c;共同进步&#xff01; 这里写目录标题 一、空间的申请1.变量定义1.1变量定义的概念&#xff1a;1.2变…

小程序 常用组件

文章目录 常见组件viewtextimageswipernavigatorrich-textnodes属性 buttoniconfromradiocheckbox 常见组件 重点讲解⼩程序中常⽤的布局组件 view,text,rich–text,button,image,navigator,icon,swiper,radio,checkbox。 等 view 代替 原来的 div 标签 <view hover-clas…

C语言基础语法跟练 day4

41、牛牛有一个半径为 r 的球&#xff0c;他想知道这个球的体积。 #include <stdio.h> #include<math.h> int main() {float r;scanf("%f",&r);float v (4.0/3)*3.14*pow(r,3);printf("%.2f",v);return 0; } 42、小乐乐比较懒惰&#x…

GPT应用程序上线注意的问题

在将GPT应用程序上线之前&#xff0c;有一些重要的问题需要注意&#xff0c;以确保应用程序的成功运行、用户满意度和合规性。以下是一些建议&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 合规性和…