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

14. Docker中实现CI和CD

目录

1、前言

2、什么是CI/CD

3、部署Jenkins

3.1、下载Jenkins

3.2、启动Jenkins

3.3、访问Jenkins页面

4、Jenkins部署一个应用

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

5.1、创建Dockerfile

5.2、集成Jenkins和Docker

6、小结


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的过程都大同小异。

相关文章:

14. Docker中实现CI和CD

目录 1、前言 2、什么是CI/CD 3、部署Jenkins 3.1、下载Jenkins 3.2、启动Jenkins 3.3、访问Jenkins页面 4、Jenkins部署一个应用 5、Jenkins实现Docker应用的持续集成和部署 5.1、创建Dockerfile 5.2、集成Jenkins和Docker 6、小结 1、前言 持续集成(CI/CD)是一种…...

【多思路解决喝汽水问题】1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水

题目内容 喝汽水问题 喝汽水&#xff0c;1瓶汽水1元&#xff0c;2个空瓶可以换一瓶汽水&#xff0c;给20元&#xff0c;可以喝多少汽水&#xff08;编程实现&#xff09;。 题目分析 数学思路分析 根据给出的问题和引用内容&#xff0c;我们可以得出答案。 首先&#xff…...

P1591 阶乘数码(Java高精度)

题目描述 求 n ! n! n! 中某个数码出现的次数。 输入格式 第一行为 t ( t ≤ 10 ) t(t \leq 10) t(t≤10)&#xff0c;表示数据组数。接下来 t t t 行&#xff0c;每行一个正整数 n ( n ≤ 1000 ) n(n \leq 1000) n(n≤1000) 和数码 a a a。 输出格式 对于每组数据&a…...

Mybatis的动态SQL及关键属性和标识的区别(对SQL更灵活的使用)

&#xff08; 虽然文章中有大多文本内容&#xff0c;想了解更深需要耐心看完&#xff0c;必定大有受益 &#xff09; 目录 一、动态SQL ( 1 ) 是什么 ( 2 ) 作用 ( 3 ) 优点 ( 4 ) 特殊标签 ( 5 ) 演示 二、#和$的区别 2.1 #使用 ( 1 ) #占位符语法 ( 2 ) #优点 2.…...

mysql下载

网址 MySQL :: Download MySQL Community Serverhttps://dev.mysql.com/downloads/mysql/ 2、选择MSI进行安装 3、这里我选择离线安装 4、这里我选择直接下载 5、等待下载安装即可...

聚合函数与窗口函数

聚合函数 回答一 聚合函数&#xff08;Aggregate Functions&#xff09;是SQL中的函数&#xff0c;用于对一组数据进行计算&#xff0c;并返回单个结果。聚合函数通常用于统计和汇总数据&#xff0c;包括计算总和、平均值、计数、最大值和最小值等。 以下是一些常见的聚合函…...

c语言实现堆

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、树1、树的概念2、树的相关概念3、树的表示 二、二叉树1、二叉树概念2、特殊的二叉树3、二叉树的性质4、二叉树的顺序结构5、二叉树的链式结构 三、堆(二叉树…...

ubuntu 如何将文件打包成tar.gz

要将文件打包成.tar.gz文件&#xff0c;可以使用以下命令&#xff1a; tar -czvf 文件名.tar.gz 文件路径 其中&#xff0c;-c表示创建新的归档文件&#xff0c;-z表示使用gzip进行压缩&#xff0c;-v表示显示详细的打包过程&#xff0c;-f表示指定归档文件的名称。 例如&am…...

前端优化页面加载速度的方法(持续更新)

提速方法方向 延迟脚本加载 使用 async 属性&#xff1a; 在这种方法中&#xff0c;脚本将在下载完成后立即执行&#xff0c;而不会阻塞其他页面资源的加载和渲染。这适用于那些不依赖于其他脚本和页面内容的脚本&#xff0c;例如分析脚本等。示例如下&#xff1a; html …...

利用SSL证书的SNI特性建立自己的爬虫ip服务器

今天我要和大家分享一个关于自建多域名HTTPS爬虫ip服务器的知识&#xff0c;让你的爬虫ip服务器更加强大&#xff01;无论是用于数据抓取、反爬虫还是网络调试&#xff0c;自建一个支持多个域名的HTTPS爬虫ip服务器都是非常有价值的。本文将详细介绍如何利用SSL证书的SNI&#…...

HTML和CSS

HTML HTML(Hyper Text Markup Language):超文本语言 超文本&#xff1a;超越了文本的限制&#xff0c;比普通文本更强大。除了文字信息&#xff0c;还可以定义图片、音频、视频等内容。 标记语言&#xff1a;由标签构成的语言 HTML标签都是预定义好的。例如&#xff1a;使用&l…...

C#的IndexOf

在 C# 中&#xff0c;IndexOf 是一个字符串、数组或列表的方法&#xff0c;用于查找指定元素的第一个匹配项的索引。它返回一个整数值&#xff0c;表示匹配项在集合中的位置&#xff0c;如果未找到匹配项&#xff0c;则返回 -1。 IndexOf 方法有多个重载形式&#xff0c;可以根…...

深度学习2.神经网络、机器学习、人工智能

目录 深度学习、神经网络、机器学习、人工智能的关系 大白话解释深度学习 传统机器学习 VS 深度学习 深度学习的优缺点 4种典型的深度学习算法 卷积神经网络 – CNN 循环神经网络 – RNN 生成对抗网络 – GANs 深度强化学习 – RL 总结 深度学习 深度学习、神经网络…...

利用LLM模型微调的短课程;钉钉宣布开放智能化底座能力

&#x1f989; AI新闻 &#x1f680; 钉钉宣布开放智能化底座能力AI PaaS&#xff0c;推动企业数智化转型发展 摘要&#xff1a;钉钉在生态大会上宣布开放智能化底座能力AI PaaS&#xff0c;与生态伙伴探寻企业服务的新发展道路。AI PaaS结合5G、云计算和人工智能技术的普及和…...

软件工程(七) UML之用例图详解

1、UML-4+1视图 UML-4+1视图将会与后面的架构4+1视图会一一对应上 视图往往出现在什么场景:我们看待一个事物,我们觉得它很复杂,难以搞清楚,为了化繁为简,我们会从一个侧面去看,这就是视图。而4+1视图就是分不同角度去看事物。 逻辑视图(logical view) 一般使用类与对…...

pd.cut()函数--Pandas

1. 函数功能 将连续性数值进行离散化处理&#xff1a;如对年龄、消费金额等进行分组 2. 函数语法 pandas.cut(x, bins, rightTrue, labelsNone, retbinsFalse, precision3, include_lowestFalse, duplicatesraise, orderedTrue)3. 函数参数 参数含义x要离散分箱操作的数组&…...

DataBinding的基本使用

目录 一、MVC、MVP和MVVM框架的使用场景二、Java使用 一、MVC、MVP和MVVM框架的使用场景 MVC&#xff1a; 适用于小型项目&#xff0c;够灵活&#xff0c; 缺点&#xff1a;Activity不仅要做View的事情还要做控制和模型的处理&#xff0c;导致Activity太过臃肿&#xff0c;管理…...

eslint和prettier格式化冲突

下载插件 ESLint 和 Prettier ESLint 进入setting.json中 setting.json中配置 {"editor.tabSize": 2,"editor.linkedEditing": true,"security.workspace.trust.untrustedFiles": "open","git.autofetch": true,"…...

matlab使用教程(26)—常微分方程的求解

1.求解非刚性 ODE 本页包含两个使用 ode45 来求解非刚性常微分方程的示例。MATLAB 提供几个非刚性 ODE 求解器。 • ode45 • ode23 • ode78 • ode89 • ode113 对于大多数非刚性问题&#xff0c;ode45 的性能最佳。但对于允许较宽松的误差容限或刚度适中的问题&…...

尚硅谷宋红康MySQL笔记 14-18

是记录&#xff0c;不会太详细&#xff0c;受本人知识限制会有错误&#xff0c;会有个人的理解在里面 第14章 视图 了解一下&#xff0c;数据库的常见对象 对象描述表(TABLE)表是存储数据的逻辑单元&#xff0c;以行和列的形式存在&#xff0c;列就是字段&#xff0c;行就是记…...

香港全新的虚拟资产服务商发牌制度

香港证监会2023年2月20日通告&#xff0c;原有虛擬資產交易平台如要符合資格參與當作為獲發牌的安排&#xff0c;必須在2023 年6 月1 日至2024 年2 月29 日期間(即由2023 年6 月1 日37起計九個月內)內&#xff0c;根據《打擊洗錢條例》下的虛擬資產服務提供者制度在網上提交完全…...

C# 泛型

目录 一、前言 二、相关内容 1、什么是泛型&#xff1f; 2、泛型类 3、泛型方法 4、限定类型参数 4.1、 类型参数的基本约束 4.2、接口约束 4.3、基类约束 4.5、泛型参数与限定类型参数的关系 4.6、自定义约束 5、使用泛型的好处 5.1、代码复用性 5.2、类型安全…...

servlet,Filter,责任的设计模式,静态代理

servlet servlet是前端和数据库交互的一个桥梁 静态网页资源的技术&#xff1a;在前端整个运行的过程中 我们的网页代码不发生改变的这种情况就称为静态的网页资源技术动态网页资源的技术&#xff1a;在前端运行的过程中 我们的前端页面代码会发生改变的这种情况就称为 动态的网…...

C++中的运算符总结(5):按位运算符(上)

C中的运算符总结&#xff08;5&#xff09;&#xff1a;按位运算符&#xff08;上&#xff09; 9、按位运算符 NOT&#xff08; &#xff5e;&#xff09;、 AND&#xff08; &&#xff09;、 OR&#xff08; |&#xff09;和 XOR&#xff08; ^&#xff09; 逻辑运算符和…...

8.Oracle中多表连接查询方式

表连接分类&#xff1a; 内连接、外连接、交叉连接、自连接 1 内连接 内连接是一种常见的多表关联查询方式&#xff0c;一般使用关键字INNER JOIN来实现。其中&#xff0c;INNER关键字可以省略&#xff0c;当只使用JOIN关键字时&#xff0c;语句只表示内连接操作。在使用内连…...

Linux 安装mysql(ARM架构)

添加mysql用户组和mysql用户 安装依赖libaio yum install -y libaio* 下载Mysql wget https://obs.cn-north-4.myhuaweicloud.com/obs-mirror-ftp4/database/mysql-5.7.27-aarch64.tar.gz安装mysql 解压Mysql tar xvf mysql-5.7.27-aarch64.tar.gz -C /usr/local/ 重命名 …...

git:git clone报错提示permissions xxxx for xxxxxx are too open

问题&#xff1a; 如题 参考&#xff1a; [密钥权限过大错误]ssh “permissions are too open” error 解决办法&#xff1a; 将id_rsa和id_rsa.pub的权限改为600...

elasticSearch数据的导入和导出

http://wget https://nodejs.org/dist/v10.13.0/node-v10.13.0-linux-x64.tar.gz 解压即可&#xff1a; 1、将索引中的数据导出到本地 myindex 是我的索引 elasticdump --inputhttp://localhost:9200/myindex--output/home/date/myindex.json2、将本地数据导入es中 elasticdum…...

DDR PHY

1.ddr phy架构 1.pub&#xff08;phy unility block&#xff09; 支持特性&#xff1a; &#xff08;1&#xff09;不支持SDRAM的DLL off mode &#xff08;2&#xff09;数据位宽是以8bit逐渐递增的&#xff08;这样做的目的是因为可能支持16/32/64bit的总线位宽&#xff…...

XSS攻击是怎么回事?记录一下

title: XSS攻击 date: 2023-08-27 19:15:57 tags: [XSS, 网络安全] categories: 网络安全 今天学习了一个网络攻击的手段&#xff0c;XSS攻击技术&#xff0c;大家自建网站的朋友&#xff0c;记得看看是否有此漏洞。 &#x1f388; XSS 攻击 全称跨站脚本攻击 Cross Site Sc…...

有没有做试题的网站/市场营销案例150例

目标: Canny边缘检测的概念OpenCV的功能:cv.Canny()理论 Canny边缘检测是一种流行的边缘检测算法,它是由John F. Canny开发的。 1. 这是一个多阶段算法,我们将了解其中的每个阶段。 2. 降噪 由于边缘检测易受图像中的噪声影响,因此第一步是使用5x5高斯滤波器去除图像中…...

重庆潼南网站建设价格/百度的营销推广模式

带形状的词云前面我们介绍了词云的创建&#xff0c;今天我们介绍带背景的词云。背景图&#xff1a;代码&#xff1a;from wordcloud import WordCloud from matplotlib import pyplot as plt from PIL import Image import numpy as np from wordcloud import WordCloud, STOPW…...

程序员做笔记的网站/西安百度竞价代运营

(ps|grep python|awk {print $1})|xargs kill -9 管道符“|”用来隔开两个命令&#xff0c;管道符左边命令的输出会作为管道符右边命令的输入。下面说说用管道符联接起来的 几个命令&#xff1a; “ ps - ef”是Red Hat 里查看所有进程的命令。这时检索出的进程将作为下一条命令…...

网站建设方案策划书/北京推广平台

nginx证书制作以及配置https并设置访问http自动跳转https 默认情况下ssl模块并未被安装&#xff0c;如果要使用该模块则需要在编译时指定–with-http_ssl_module参数&#xff0c;安装模块依赖于OpenSSL库和一些引用文件&#xff0c;通常这些文件并不在同一个软件包中。通常这个…...

wordpress 301 错误/广东网站关键词排名

前台 后台...

网站开发百度云/河南网站seo费用

在1894年顾拜旦开创现代奥林匹克运动百年后的今天&#xff0c;奥运会已成为全人类共同的盛大体育赛事&#xff0c;不断鼓舞着人们超越自我、突破极限。如今&#xff0c;人工智能领域的竞赛也日益兴盛&#xff0c;持续加速着科技进步的步伐。2018年6月5日&#xff0c;由拍拍贷智…...