Docker Compose+Jenkins自动化部署流程图文教程
前言
在软件开发的快节奏世界里,自动化是提升效率、保障质量的关键。而说到自动化部署,Jenkins 绝对是一个绕不开的名字。它是一款基于Ja va开发的开源持续集成与持续交付(CI/CD)服务器,专门用来搞定软件开发中那些繁琐的构建、测试和部署流程。
免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈
简单来说,CI/CD可以拆解为两个核心环节:
- CI(持续集成):这就像是给代码做“全面体检”。每当有新的代码提交,系统就会自动拉取代码,然后进行编译、构建、单元测试,甚至用SonarQube这类工具扫描代码质量。整个过程的目标是快速发现问题,但绝不发布上线,完全不影响线上环境的稳定。
- CD(持续交付/部署):体检通过后,就该“上岗”了。这个环节负责把构建好的成果(比如Jar包、前端Dist目录或Docker镜像)上传,并部署到测试、预发乃至生产环境,最终重启服务,完成上线。一句话,CD是真正让代码在线上“跑起来”的那一步。
理解了这两个概念,我们就能明白,搭建一套CI/CD流水线,本质上是在为团队构建一条从代码到用户的自动化高速公路。
准备工作
在动手配置Jenkins之前,有几项准备工作必不可少。遵循这些步骤,能让你后续的流程走得更加顺畅:
- 首先,确保你的环境中已经安装好Docker Compose,并用它来部署Jenkins和Git服务。
- 一个关键建议是:在宿主机(而非容器内)生成SSH密钥对,然后将密钥挂载到Jenkins容器中。
- 接着,将生成的公钥配置到你使用的Codeup等代码仓库的SSH设置里。
- 最后,别忘了进入Jenkins容器内部,测试一下SSH连接是否畅通。这几步做好了,就为后续的自动化代码拉取铺平了道路。
Jenkins配置流程
1. 创建job

万事开头,从创建一个新的Jenkins任务开始。这个过程很直观,就像给我们的自动化流水线起个名字、安个家。
2. 选择流水线类型

在众多任务类型中,我们需要选择“流水线”(Pipeline)。这是Jenkins的灵魂所在,它允许我们以代码的方式定义整个构建、测试、部署的流程,灵活且强大。
3. 到这里我们就开始配置Pipeline script,点击Pipeline语法,来自动生成我们需要的配置。

接下来进入核心环节——编写Pipeline脚本。别担心,Jenkins提供了非常友好的“Pipeline语法”生成工具,对于不熟悉的配置,完全可以利用它来辅助生成,能省去不少查阅文档的时间。
4. 如下图,我们Git方式,配置Git仓库地址(SSH协议),再添加认证相关。

流水线的第一步通常是拉取代码。在生成工具中,我们选择Git方式,填入仓库的SSH地址。更关键的一步是配置认证,让Jenkins有权限访问你的代码库。
5. 这里我们使用的是秘钥认证方式,由于jenkins是通过docker compose管理容器,推荐在宿主机上生成密钥对,然后挂载到容器中,公钥配置到git仓库SSH配置中,私钥粘贴到下图Key中,这样jenkins就可以免交互的拉取git仓库 中的代码了。

这里采用SSH密钥认证是最佳实践。尤其当Jenkins运行在Docker容器中时,更推荐在宿主机生成密钥对并挂载进去。把公钥交给Git仓库,把私钥粘贴到Jenkins的凭证配置里(如上图所示)。这样一来,Jenkins就能实现免密、无交互地拉取代码,自动化流程才真正称得上“自动”。
6. 配置完成后,我们就可以生成Pipeline脚本了。点击下方Generate Pipeline Script,然后复制方框内的内容。

所有参数填妥后,点击“Generate Pipeline Script”按钮,一段标准的Git拉取代码脚本就自动生成了。复制这段代码,它就是我们流水线脚本的第一块积木。
7. 编写我们所需要的Pipeline脚本如下,将其粘贴到script的拉取代码模块中,并修改正确的分支,其他模块内容自行编写。
pipeline {
agent any
stages {
stage('拉取代码') {
steps {
git(
url: 'git@codeup.aliyun.com:xxxx.git',
branch: 'master',
credentialsId: 'codeup-xxxx' // 你在 Jenkins 中创建的凭证ID
)
}
}
stage('构建') {
steps {
sh 'echo "开始构建..."'
// 你的构建命令,例如:
// sh 'mvn clean package'
// sh 'npm install && npm run build'
}
}
stage('测试') {
steps {
sh 'echo "运行测试..."'
// sh 'mvn test'
// sh 'npm test'
}
}
}
post {
success {
echo 'Pipeline 执行成功!'
}
failure {
echo 'Pipeline 执行失败!'
}
}
}
现在,让我们组装一个完整的流水线示例。将生成的Git脚本粘贴到‘拉取代码’阶段。别忘了根据你的实际情况修改仓库地址、分支名和凭证ID。后续的‘构建’、‘测试’阶段,则需要你填入项目特定的命令,比如Ma ven的`clean package`或NPM的`install && run build`。最后的`post`部分定义了成功或失败后的处理,让流程有始有终。
8. 立即构建,运行测试

脚本编写完成,激动人心的时刻到了:点击“立即构建”。Jenkins会开始执行你定义的流水线,每个阶段的状态都会清晰展示。通过观察控制台输出,你可以验证整个流程是否如预期般运行。这第一次成功的构建,标志着你的自动化部署流水线已经正式启航。
总结
通过以上步骤,我们完成了一套基于Docker Compose和Jenkins的基础CI/CD流水线搭建。从环境准备、密钥配置,到编写Pipeline脚本并成功运行,整个过程其实清晰地勾勒出了自动化部署的核心脉络。关键在于理解每个环节的作用:准备工作是基石,SSH密钥认证是安全畅通的保障,而Pipeline脚本则是驱动整个流程的蓝图。掌握了这个框架,你就可以根据自己项目的具体技术栈(Ja va/Node.js/Python等),去填充“构建”、“测试”乃至“部署”阶段的具体命令,从而打造出一条完全贴合团队需求的、高效可靠的软件交付流水线。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
Composer怎么离线装依赖_Composer无网络安装方案【汇总】
离线安装 Composer 依赖,别只拷个锁文件就跑 在离线环境下部署 PHP 项目,很多开发者会下意识地把 composer lock 和 vendor 目录一拷了事,结果运行 composer install 时,要么直接报错,要么看似成功却埋下运行时崩溃的隐患。这背后的根本原因,其实在于 Co
Laravel怎么处理自定义日志通道_Laravel按业务分类记录日志【介绍】
在 Lara vel 中新增自定义日志通道需在 config logging php 中配置驱动(如 single daily)、路径、格式器等,通道名须小写无点号,配置后执行 php artisan config:clear,并通过 Log::channel( xxx ) 显式调用,注意权限、le
如何在ThinkPHP中通过钉钉机器人发送告警通知_Webhook封装与Markdown格式
如何在ThinkPHP中通过钉钉机器人发送告警通知:Webhook封装与Markdown格式 ThinkPHP 里怎么调用钉钉 Webhook 发告警 其实方法很直接,直接用 curl 或者 file_get_contents 发起一个 POST 请求就行,完全不需要额外安装什么 SDK。钉钉机器人
怎么利用 Base64 工具类实现图片字节数组与字符串的相互转换
怎么利用 Base64 工具类实现图片字节数组与字符串的相互转换 先说一个核心概念:Base64 工具类本身不处理任何图片逻辑,它只专注做好一件事——字节数组和字符串之间的编解码。图片最终能否正确还原,完全取决于你传入的字节数组是否完整、格式是否合法。这就好比一个翻译官,他只负责把一种语言翻译成另一
如何通过分析 Synchronized 的锁膨胀机制理解从偏向锁到重量级锁的位状态迁移
如何通过分析 Synchronized 的锁膨胀机制理解从偏向锁到重量级锁的位状态迁移 简单来说,锁的状态就藏在对象头的标记位里:偏向锁的Mark Word低3位是101,轻量级锁是000,而重量级锁则是010。识别这些位模式,并理解它们之间不可逆的迁移路径,是掌握Synchronized底层机制的
- 日榜
- 周榜
- 月榜
1
2
3
4
5
6
7
8
9
10
相关攻略
2015-03-10 11:25
2015-03-10 11:05
2021-08-04 13:30
2015-03-10 11:22
2015-03-10 12:39
2022-05-16 18:57
2025-05-23 13:43
2025-05-23 14:01
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程
热门话题

