Docker中实现CI(持续集成)和CD(持续交付/部署)的实战详解

 更新时间:2023年08月31日 09:27:15   作者:有一只柴犬  
持续集成(CI/CD)是一种软件开发的经验总结,它用于帮助开发团队和交付团队实现频繁且快速的集成,以及测试他们的工作成果,以尽可能快地发现项目开发和交付工程中的错误,本文就给大家详细的介绍一下Docker中如何实现CI和CD,需要的朋友可以参考下

1、前言

持续集成(CI/CD)是一种软件开发的经验总结。它用于帮助开发团队和交付团队实现频繁且快速的集成,以及测试他们的工作成果,以尽可能快地发现项目开发和交付工程中的错误。越频繁,越早的项目集成与项目交付,则意味着问题会被越早发现。因此,通过持续集成 ( CI/CD)可以及时发现和解决代码故障,提高代码质量,减少故障处理成本等。

2、什么是CI/CD

CI/CD 是一种通过在应用的开发阶段引入自动化来频繁向客户交付应用的方法。CI/CD 包含以下3 个概念:

  • CI(Continuous Integration):持续集成。
  • CD(Continuous Delivery):持续交付。
  • CD(Continuous Deployment):持续部署。

而Jenkins作为一个开源的,也是被使用最多的持续集成工具,在项目中也是被广泛使用。今天就以Jenkins为例来进行介绍。

3、部署Jenkins

由于Jenkins是基于Java语言开发的,因此需要下安装JDK环境,这里安装了JDK8.

3.1、下载Jenkins

可以直接从官网下载Jenkins.war然后上传到服务器。Jenkins download and deployment

需要注意的是jenkins支持的JDK版本,从官方文档中可以看出几个LTS版本所需要的java环境。

由于我们JDK环境是java8,因此这里下载这里下载的是2.346.3版本的war包。

快速下载地址:Index of /war-stable/2.346.3

wget --no-check-certificate https://get.jenkins.io/war-stable/2.346.3/jenkins.war

这里由于镜像问题,需要多尝试几次。

3.2、启动Jenkins

下载后,启动Jenkins:

java -jar jenkins.war

输出以下信息则表示启动成功。

3.3、访问Jenkins页面

浏览器访问http://192.168.74.128:8080/。

后续的Jenkins安装步骤这里忽略,教程应该很多。

安装完成后,进入到Jenkins主页面。

4、Jenkins部署一个应用

传统的Jenkins构建应用这里就不赘述了,这里是Docker专栏,所以我们重点讲下面一节,实现Docker应用的持续集成和部署。

5、Jenkins实现Docker应用的持续集成和部署

在Docker应用开发中,最常见的就是使用Dockerfile文件,可以使用代码仓库管理他。

一般来说企业中的代码仓库都是私有的,部门会自己搭建私有的代码仓库,如SVN、GitLab等。这里方便演示,我就不自己搭了,使用Github直接演示(主要还是懒)。

部署Jenkins的服务器,必须提前安装Git。

5.1、创建Dockerfile

在我们本地创建一个Dockerfile文件,里面实现一个nginx的简单页面:

FROM nginx
RUN echo '<h1>this is jenkins build demo,version:1</h1>' > /usr/share/nginx/html/index.html

将文件提交到Github仓库中。

同时在仓库中的Settings中配置webhook,Payload URL配置我们Jenkins的地址,用于每次我们提交代码时都向Jenkins发送一个http请求。

5.2、集成Jenkins和Docker

Jenkins中创建一个Freestyle project的任务。

在源码管理中配置Git相关信息。

接着在构建选项中,选择“执行shell”。

在命令对话框中输入构架容器命令:

docker build -t my_jenkins_docker_demo .
docker run -d -p 8081:80 my_jenkins_docker_demo

点击保存后,在点击立即构建。

构建成功后,访问地址:http://192.168.74.128:8081:

6、小结

至此,完成了Jenkins和Docker的集成,从而可以实现应用的CI/CD。在实际项目开发中,可能会涉及大量的程序代码,以及依赖的库和环境,但使用Jenkins实现CI/CD的过程都大同小异。

以上就是Docker中实现CI和CD的实战详解的详细内容,更多关于Docker实现CI和CD的资料请关注脚本之家其它相关文章!

相关文章

  • docker容器启动后如何修改或添加端口

    docker容器启动后如何修改或添加端口

    这篇文章主要介绍了docker容器启动后如何修改或添加端口问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • docker+daocloud实现前端项目自动构建部署

    docker+daocloud实现前端项目自动构建部署

    这篇文章主要介绍了docker+daocloud实现前端项目自动构建部署,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • docker run -d和docker run -it的区别详解

    docker run -d和docker run -it的区别详解

    记得第一次接触docker的时候,教程中写着docker run -it之类的命令,当时对这个-it选项是一知半解,下面这篇文章主要给大家介绍了关于docker run -d和docker run -it的区别的相关资料,需要的朋友可以参考下
    2023-05-05
  • Docker私有仓库管理和删除本地仓库中的镜像

    Docker私有仓库管理和删除本地仓库中的镜像

    这篇文章主要介绍了Docker私有仓库管理和删除本地仓库中的镜像,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • Docker安装部署RabbitMQ教程

    Docker安装部署RabbitMQ教程

    本文详解了Docker容器化部署RabbitMQ的优势,涵盖环境一致性、资源隔离、弹性伸缩等核心价值,提供从安装配置到集群部署、数据持久化及故障排查的完整方案,帮助构建高效稳定的消息队列服务
    2025-08-08
  • 彻底解决Docker拉取镜像超时问题及分析

    彻底解决Docker拉取镜像超时问题及分析

    Docker拉取镜像常因网络延迟、加速器失效等问题失败,解决方案包括配置多源镜像加速器、关闭IPv6、更换DNS、验证加速器连通性、离线导入或skopeo工具,以解决中国大陆用户的连接问题
    2025-09-09
  • Docker+Nginx+KeepaLived实现Nginx一主一从高可用方式

    Docker+Nginx+KeepaLived实现Nginx一主一从高可用方式

    在CentOS7主从服务器上部署Nginx容器并配置Keepalived实现高可用,通过虚拟IP自动切换,主从均需安装Keepalived,配置健康检查脚本监控Nginx状态,故障时自动重启或切换虚拟IP,需关闭防火墙和SELinux,并确保脚本有执行权限
    2025-07-07
  • 使用Dockerfile部署nodejs服务的方法步骤

    使用Dockerfile部署nodejs服务的方法步骤

    这篇文章主要介绍了使用Dockerfile部署nodejs服务的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • Docker学习笔记之容器查看启动终止删除的方法

    Docker学习笔记之容器查看启动终止删除的方法

    本篇文章主要Docker学习笔记之容器查看启动终止删除的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • 教你一分钟搞定docker+redis哨兵模式

    教你一分钟搞定docker+redis哨兵模式

    这篇文章主要介绍了教你一分钟搞定docker+redis哨兵模式,本文主要讲解一主二从三哨兵,特将其部署到一台机器上,并通过端口区分,需要的朋友可以参考下
    2023-03-03

最新评论