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

2026-03-16 如何在 Jenkins 中使用 Docker(deepseek)

没关系!不知道 Docker 完全正常,我来用最简单的方式给你讲清楚,然后带你一步步用上它。

🎯 Docker 是什么?用一个例子帮你理解

Docker 就像是一个"打包箱"

想象一下:你要搬家,有电脑、书、盆栽、衣服……如果直接搬,很容易乱,而且到了新家还要重新布置。但如果你把所有东西分类装进统一的箱子里,每个箱子贴好标签,到了新家直接打开就能用,多方便!

Docker 做的就是这件事:

  • 你的应用(比如你的前端项目) + 它需要的环境(Node.js 16.20.0、npm、各种依赖) = 装进一个 Docker 镜像(箱子)
  • 这个"箱子"可以在任何有 Docker 的电脑上直接运行,一模一样的环境,不会有"在我电脑上能跑,在你电脑上不行"的问题

对你现在的帮助
你的项目需要 Node.js 16,但 CentOS 7 系统太老,缺少依赖库(比如之前报错的 zlib)。用 Docker,你可以直接用一个预装了 Node.js 18 的箱子,里面啥都有,完全绕过系统问题。


🚀 如何在 Jenkins 中使用 Docker(手把手教程)

第一步:在服务器上安装 Docker

登录你的 Linux 服务器,执行以下命令(基于 CentOS 7):

# 1. 安装必要的依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2# 2. 添加 Docker 的 yum 源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# 3. 安装 Docker(选一个稳定版本,比如 24.0.9)
sudo yum install -y docker-ce-24.0.9 docker-ce-cli-24.0.9 containerd.io# 4. 启动 Docker 并设置为开机自启
sudo systemctl start docker
sudo systemctl enable docker# 5. 验证安装成功
sudo docker --version
# 应该显示:Docker version 24.0.9, build ...

第二步:让 Jenkins 有权限使用 Docker

默认情况下,只有 root 用户能用 Docker。我们需要把 Jenkins 用户加到 docker 组里 :

# 将 jenkins 用户加入 docker 组
sudo usermod -aG docker jenkins# 重启 Jenkins 服务使权限生效
sudo systemctl restart jenkins

这一步很关键,否则 Jenkins 运行时会报 Permission denied

第三步:修改你的 Jenkinsfile,使用 Docker 构建

这是你现在的 Jenkinsfile 要改的地方。我帮你写了一个完整可用的版本

// Jenkinsfile - 使用 Docker 构建前端项目
pipeline {// 关键修改:使用 Docker 容器作为 agentagent {docker {image 'node:18.20.0'  // 使用 Node.js 18.20.0 官方镜像args '-u root:root'    // 以 root 运行避免权限问题}}environment {PROJECT_NAME = 'arco-design-vue-demo'}stages {stage('Checkout') {steps {checkout scmecho "成功检出代码,当前分支: ${env.BRANCH_NAME}"}}stage('Install Dependencies') {steps {sh '''echo "Node版本: $(node -v)"echo "npm版本: $(npm -v)"npm install'''}}stage('Build Frontend') {steps {script {def buildEnv = ''switch(env.BRANCH_NAME) {case 'prd':echo '🔨 为生产环境构建...'buildEnv = 'prod'breakcase 'uat':echo '🔨 为 UAT 环境构建...'buildEnv = 'uat'breakcase 'sit':echo '🔨 为 SIT 环境构建...'buildEnv = 'sit'breakdefault:echo '🔨 为开发环境构建...'buildEnv = 'dev'}sh "npm run build -- --mode ${buildEnv}"}}}stage('Run Tests') {when {branch 'sit'}steps {sh 'npm run type:check'}}stage('Archive') {steps {echo '归档构建产物...'archiveArtifacts artifacts: 'dist/**', fingerprint: true}}}post {always {echo '清理工作...'}success {echo '🎉 流水线执行成功!'}failure {echo '❌ 流水线执行失败。'}}
}

第四步:提交并运行

  1. 把上面的 Jenkinsfile 保存并提交到你的 Git 仓库
  2. 在 Jenkins 中触发构建
  3. 观察日志,你会看到类似这样的输出:
[Pipeline] { (Checkout)
[Pipeline] docker run -v ... node:18.20.0 ...
Node版本: v18.20.0
npm版本: 10.5.0
npm install
...

整个过程:Jenkins 会自动从 Docker Hub 拉取 node:18.20.0 镜像,然后在这个容器里执行你的构建命令,完全隔离,不会有系统依赖问题!


📝 通俗解释刚才发生了什么

之前的问题 Docker 怎么解决的
系统缺少 zlib 库 Docker 容器自带完整的操作系统文件,里面有需要的库
Node 版本不兼容 直接指定 node:18.20.0 镜像,版本精确控制
权限问题(npm 不能写 cache) 容器内以 root 运行,没有权限限制
Jenkins 找不到 node 命令 容器内预装了 node,PATH 自动配置好

一句话总结Docker 把你的构建环境和服务器彻底隔离开,服务器只需要有 Docker 就行,其他什么都不用装。


✅ 下一步

  1. 先执行安装 Docker 的命令(第一步)
  2. 然后执行添加 Jenkins 用户到 docker 组的命令(第二步)
  3. 最后替换 Jenkinsfile(第三步)

如果遇到任何问题,直接把错误日志发给我,我帮你看看!💪

http://www.jsqmd.com/news/485818/

相关文章:

  • 1.54英寸墨水屏桌面终端设计与实现
  • 紫微斗数职场指南:从命盘看出最适合你的职业方向(含14主星解析)
  • MySQL迁移中的高效数据覆盖实践:REPLACE INTO 的技术细节与应用
  • 全自动撕膜仪品牌推荐,靠谱厂家一次整理 - 品牌推荐大师
  • 计算机毕设java的旅游攻略系统 基于SpringBoot的个性化旅行规划与服务平台 智慧旅游信息管理与在线预订系统
  • 【C++哲学】面向对象的三大特性之 继承
  • 连锁零售企业商旅平台排名Top 6与选型全指南:从痛点拆解到实践落地 - 资讯焦点
  • 以SOC为均衡条件的电容分层均衡系统,每组4节电池,先组内再组间均衡,支持充放电设置及上下限调节
  • 计算机毕业设计springboot高校宿舍报修管理系统 基于Spring Boot框架的高校公寓设施运维管理平台 智慧校园学生寝室维修服务系统的设计与实现
  • 三家值得一式的携程任我行礼品卡回收平台 - 淘淘收小程序
  • 哈尔滨欧米奇西点烘焙学校,绥化地区推荐选择吗 - 工业品网
  • 计算机毕业设计springboot高校宿舍管理系统 基于SpringBoot的高校学生公寓智慧管理平台设计与实现 SpringBoot框架下校园住宿服务综合管理系统开发
  • C++ 二叉树、堆与搜索二叉树机制-个人复习记录
  • 分析长春可代加工的PE排水管厂家,选购时注意这些要点 - mypinpai
  • 2026销售管理系统全链路对比:6类CRM产品核心能力拆解
  • 车辆稳定性相平面MATLAB程序绘制探索
  • 斯坦福 CS336 从零构建大模型 (2025 春) - 第十三讲:数据(Data 1)
  • 知识付费平台推荐指南:2026年五大主流平台实测对比 - 资讯焦点
  • 计算机毕业设计springboot基于JAVA个人博客网站系统 基于Spring Boot的个人博客平台设计与实现 基于Java Web的独立博客系统开发与实现
  • 合规深耕抗衰科研赛道 斐萃科学抗衰研究院成立 - 速递信息
  • 2026权威评测:毕业论文AIGC痕迹怎么破?盘点降重神器!
  • 刷屏全网的开工手势舞,藏着58同城的行业级营销破局思路 - 速递信息
  • 视频会议EasyDSS语音转写STT/AI会议摘要/AI大模型智能技术重构会议全流程
  • 新人必读:瑞祥卡回收渠道选择与流程全攻略5大注意事项 - 团团收购物卡回收
  • 当光伏遇上粒子群:配电网优化配置实战
  • 系统集成项目管理工程师章节占分比(2023~2025年)
  • DL00359:‘深度学习CNN水稻病虫害自动识别系统‘——助力种植用户快速识别虫害
  • Cosmos-Reason1-7B效果展示:从原始视频到物理因果链推理的完整可视化
  • Agent 记忆系统架构设计:从双层存储到智能整合的工程实践
  • Matlab Simulink下的LLC并网与离网逆变器功能介绍:电流闭环控制并网,电压电流双...