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

Docker 搭建 Jenkins 实现自动部署!

全文目录:

    • 开篇语
    • 前言
    • 准备工作
    • 步骤一:拉取Jenkins官方镜像
    • 步骤二:创建并启动Jenkins容器
    • 步骤三:访问Jenkins Web界面
    • 步骤四:完成Jenkins安装
    • 步骤五:配置自动化部署
      • 1. 创建构建任务
      • 2. 配置自动部署到远程服务器
      • 3. 配置Webhooks触发构建
    • 步骤六:优化Jenkins的性能和安全
    • 总结
    • 文末

开篇语

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛

  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。

  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!

前言

  随着持续集成(CI)和持续交付(CD)理念的普及,自动化部署已经成为现代开发流程中的重要环节。而Jenkins作为业界广泛使用的自动化服务器,已经成为CI/CD工具链中的核心组成部分。Jenkins不仅支持构建、测试、部署等任务的自动化,还通过丰富的插件生态系统实现了各种自定义需求。

  传统上,Jenkins部署通常依赖于本地虚拟机或物理服务器,但这对于资源管理和灵活性有一定的局限性。随着Docker的流行,Docker容器提供了一种更轻量级、可扩展的方式来部署Jenkins,并使得整个自动化部署流程更加高效和灵活。本文将介绍如何使用Docker来搭建Jenkins,实现自动部署。

准备工作

在开始搭建之前,确保你的机器上已经安装了Docker。如果没有安装,可以通过Docker官网的指南来完成安装:Docker安装指南。安装完成后,可以通过命令行检查Docker是否安装成功:

docker --version

此外,确保你的机器能够访问Docker Hub,以便拉取Jenkins的官方镜像。

步骤一:拉取Jenkins官方镜像

Jenkins提供了一个官方的Docker镜像,能够快速部署Jenkins实例。我们可以通过Docker命令从Docker Hub中拉取这个镜像:

docker pull jenkins/jenkins:lts

这里使用的是Jenkins的长期支持版本(LTS),如果你需要最新的版本,可以去掉lts标签。

步骤二:创建并启动Jenkins容器

拉取完镜像后,我们可以使用Docker命令来创建并启动Jenkins容器。在创建容器时,通常需要挂载数据卷(Volume)来持久化Jenkins的数据,比如构建历史、配置文件等,以便容器重启后数据不会丢失。我们还需要映射Jenkins的端口,使得我们可以通过浏览器访问Jenkins的Web界面。

docker run -d \--name jenkins \-p 8080:8080 \-p 50000:50000 \-v jenkins_home:/var/jenkins_home \jenkins/jenkins:lts

解释一下这个命令:

  • -d:让容器在后台运行。
  • --name jenkins:给容器起个名字(可以自定义)。
  • -p 8080:8080:将容器的8080端口映射到宿主机的8080端口,Jenkins Web界面会通过这个端口提供服务。
  • -p 50000:50000:Jenkins需要这个端口来与构建代理进行通信。
  • -v jenkins_home:/var/jenkins_home:将Jenkins的工作目录挂载到宿主机的jenkins_home卷中,确保数据持久化。

命令执行完毕后,你可以使用以下命令查看容器是否启动成功:

docker ps

此时,Jenkins应该已经成功运行并通过端口8080暴露了Web界面。

步骤三:访问Jenkins Web界面

打开浏览器,访问http://<你的服务器IP>:8080,你应该能够看到Jenkins的初始安装页面。为了完成初始化,你需要提供Jenkins的解锁密码,可以通过以下命令获取:

docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword

复制输出的密码,粘贴到Web界面的解锁框中,点击Continue

步骤四:完成Jenkins安装

Jenkins会要求你安装推荐的插件,点击Install suggested plugins。安装完成后,Jenkins会要求你创建第一个管理员用户,按需填写并继续。

步骤五:配置自动化部署

现在,你已经成功搭建了Jenkins实例。接下来,可以根据实际需求配置自动化部署任务。以下是常见的几种自动化部署场景:

1. 创建构建任务

  1. 在Jenkins主界面,点击New Item
  2. 输入任务名称,选择Freestyle project(或根据需求选择其他任务类型),点击OK
  3. 在任务配置页面,你可以配置源码管理、构建触发器、构建脚本等。例如,你可以将GitHub仓库配置为源码管理,选择合适的触发器(例如,Git推送时触发构建)。
  4. 配置构建步骤,通常可以通过Shell脚本或者构建工具(如Maven、Gradle)执行自动化构建。
  5. 配置构建后操作,例如自动部署到服务器、发送邮件通知等。

2. 配置自动部署到远程服务器

通过Jenkins的Deploy to container插件或者SSH插件,可以将构建的项目自动部署到远程服务器上。常见的部署方式包括:

  • 将构建的JAR包、WAR包等通过SSH上传到远程服务器。
  • 使用Docker容器进行自动部署。

例如,如果使用Docker容器部署应用,你可以在Jenkins中配置一个Shell构建步骤,通过命令拉取最新镜像并运行容器:

docker pull <image-name>:latest
docker stop <container-name>
docker rm <container-name>
docker run -d --name <container-name> <image-name>:latest

3. 配置Webhooks触发构建

为了实现持续集成和持续部署,你可以配置Webhooks,使得每当Git仓库有更新时,Jenkins自动拉取代码并开始构建。具体做法是:

  • 在GitHub等代码托管平台配置Webhooks,将Webhook请求发送到Jenkins。
  • 在Jenkins中配置任务的触发条件(例如,当GitHub仓库有push事件时触发构建)。

步骤六:优化Jenkins的性能和安全

随着使用的深入,Jenkins可能会遇到性能瓶颈,特别是在大规模团队中。为了提高Jenkins的性能和安全性,可以考虑以下几点:

  1. 使用构建代理:在Jenkins主节点之外配置构建代理节点,将任务分配到不同的节点来减轻主节点的负担。
  2. Jenkins插件管理:定期检查和更新安装的插件,避免使用过时或有安全漏洞的插件。
  3. 备份和恢复:定期备份Jenkins的数据和配置,以防止数据丢失。
  4. 访问控制:配置Jenkins的用户权限管理,确保不同团队成员有合适的访问权限。

总结

通过Docker搭建Jenkins并实现自动部署,不仅能够显著提高开发效率,还能实现快速、可靠的自动化流程。Docker容器提供了一个高度隔离、易于扩展的运行环境,而Jenkins则通过其强大的插件生态和自定义功能,帮助我们轻松实现持续集成和持续交付。随着DevOps理念的深入,Jenkins和Docker将成为现代软件开发中的核心工具,帮助团队实现更加高效的自动化部署和交付。

… …

文末

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

… …

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!


⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。
⭐️若有疑问,就请评论留言告诉我叭。


版权声明:本文由作者原创,转载请注明出处,谢谢支持!

http://www.dtcms.com/a/322593.html

相关文章:

  • jenkins-飞书通知机制
  • STM32 外设驱动模块四:光敏电阻(LDR) 模块
  • Linux网络编程:TCP的远程多线程命令执行
  • Ollama 开启远程端口
  • 闲鱼智能监控机器人:基于 Playwright 与 AI 的多任务监控分析工具
  • Kubernetes 集群密钥与机密管理方案对比分析:Vault、Sealed Secrets 与 AWS KMS
  • dokcer 容器里面安装vim 编辑器
  • ruoyi关闭shiro校验,任何接口可以直接访问
  • 202506 电子学会青少年等级考试机器人五级器人理论真题
  • 【工具变量】地级市固定资产投资数据(2000-2023年)
  • 大模型在垂直场景的创新应用:搜索、推荐、营销与客服新玩法
  • LabVIEW用户事件交互
  • 【Datawhale AI夏令营】从Baseline到SOTA:深度剖析金融问答RAG管道优化之路
  • 鸿蒙示例代码使用心得
  • 华为实验: 单区域/多区域OSPF
  • n8n飞书webhook配置(飞书机器人、飞书bot、feishu bot)Crypto节点、js timestamp代码、Crypto node
  • 算法_python_学习记录_01
  • 可泛化双手操作机器人基准测试:CVPR 2025 MEIS 研讨会 RoboTwin 双臂协作挑战赛
  • day16 - CSS3新增属性
  • 【n8n教程笔记——工作流Workflow】文本课程(第二阶段)——5 自动化业务工作流——0 用例 (Use case)
  • FFMPEG将H264转HEVC时,码率缩小多少好,以及如何通过SSIM(Structural Similarity Index结构相似性指数)衡量转码损失
  • 大语言模型概述
  • day15 - CSS3新增属性
  • Java Callback 实现线程切换以及与Kotlin原理关系
  • MySQL(188)如何使用MySQL的慢查询工具?
  • 驾驶场景玩手机识别准确率↑32%:陌讯动态特征融合算法实战解析
  • 用生活日常的案例来介绍“程序运行时,对函数的调用一般有两种形式:传值调用和引用调用 和 这两种调用有什么区别?
  • 使用Navicat备份数据库MySQL、PostGreSQL等
  • SqlSugar vs EF Core 对比 2025年 .NET ORM
  • ES6中箭头函数的作用