乐趣区

关于前端:CyberData镜像增量构建实战

一、什么是镜像增量构建

镜像增量构建是一种优化构建过程的办法,通过利用缓存,只构建发生变化的局部,从而放慢构建速度并缩小资源耗费。在增量构建中,当代码或配置发生变化时,零碎会智能地辨认出须要从新构建的局部,而不是从新构建整个镜像。这种形式能够节省时间和计算资源,进步构建效率。增量构建技术对于继续集成和继续部署流程十分重要,可能帮忙开发团队更快地获取更新后的镜像,减速应用程序的部署。

二、构建的原理

增量构建的工作原理是通过比拟以后代码版本和之前构建时的状态,辨认出发生变化的局部,而后只从新构建这些受影响的局部,而不是整个镜像。这样能够利用之前构建时生成的缓存信息,防止反复构建未发生变化的局部,从而进步构建效率。
•具体来说,增量构建工作原理包含以下几个步骤:
1. 比对变更:零碎会检测以后代码版本与之前构建时的状态之间的差别,确定哪些局部产生了变动。
2. 标记受影响局部:辨认出须要从新构建的镜像层或组件,并标记这些受影响的局部。
3. 从新构建:仅对标记为受影响的局部进行从新构建,利用之前构建时生成的缓存信息来减速构建过程。
4. 更新镜像:将从新构建的局部与之前的镜像组合,生成更新后的镜像。
通过这种形式,增量构建防止了不必要的反复构建,节俭了工夫和资源,并放慢了镜像更新的速度。这种办法在继续集成和继续部署过程中施展着重要作用,帮忙开发团队更高效地进行软件开发和部署。

三、增量构建的劣势

增量构建和全量构建是两种不同的构建形式,它们在构建过程中的效率和资源利用方面有所不同。
增量构建:
•工作原理:只从新构建发生变化的局部,利用缓存防止反复构建未发生变化的局部。
•劣势:
构建速度更快:只需解决变更局部,节俭了从新构建整个镜像的工夫。
资源耗费更少:防止了不必要的计算资源节约。
实用于继续集成环境:可能疾速获取更新后的镜像,减速部署过程。
全量构建:
•工作原理:每次都从新构建整个镜像。
•劣势:
确保镜像完全一致:每次都从头开始构建,防止了可能存在的缓存一致性问题。
更实用于特定场景:某些状况下须要确保每次构建都是全新的,全量构建更适宜这种需要。

四、利用场景举例

1.CyberData(以下简称 CD)理论开发中,常见的几种增量构建状况归类如下:
•hotfix 补丁更新
次要用于开发同学针对某个 CD 版本修复一些 bug 后,须要疾速更新一个补丁,走失常全量出包的形式,打包工夫绝对较长,还有就是全量包的体积较大,个别好几个 G,传输也绝对较费时,这个时候能够思考走增量打包的形式,晋升开发部署效率;
•调试工具长期装置
CD 部署装置过程中,因网络环境等问题,须要在镜像中提供一些工具软件(如:curl 之类)帮助部署人员疾速定位问题,能够基于 CD 镜像增量的形式疾速生成带调式工具的镜像,待问题解决后思考再用之前的失常镜像拉起服务;
•定制驱动包替换
CD 部署在 POC 现场后,为了疾速适配现场的数据源组件,有时候须要替换原来服务镜像里的底层驱动包,这种状况也能够思考增量构建的形式疾速生成替换过驱动的镜像,用于 POC 时的疾速适配验证;
1.CD 增量构建简略示例
•新建并进入构建目录,同时拷贝须要替换的 jar 文件(或者是驱动包文件:mysql-plugin.jar)到此目录下

  1. 拷贝要替换 jar 包到当前目录示例(可选)
mkdir build_image
cd build_image

# 1. 拷贝要替换 jar 包到当前目录示例(可选)
cp  xxx/xxx/app.jar ./

# 2. 拷贝要替换的 mysql 驱动包到当前目录示例(可选)cp xxx/xxx/mysql-plugin.jar ./

•查看镜像
找到要批改的镜像名, 以 core 为例

 docker images

•批改 Dockerfile: 以旧镜像为母包,COPY 要替换的文件进来

FROM 172.18.1.56:5220/cyberdata/cyberdata-core:3.11.1-202308081835-release

 1. 替换 core 服务 jar 文件示例(可选)COPY app.jar /opt/app/app.jar

 2. 替换 mysql 的 jdbc 驱动包示例(可选)COPY mysql-plugin.jar /opt/app/jdbc_driver_plugins/mysql-plugin.jar

 3. 装置长期工具软件 curl,以 centos8 根底为示例(可选)RUN yum install -y curl

•构建镜像

docker build -t 172.18.1.56:5220/cyberdata/cyberdata-core:new_tag ./

•查看并应用新的镜像

docker images | grep new_tag

五、结语

增量构建更适宜频繁变更的场景,可能进步构建效率和放慢部署速度。
全量构建保障了镜像的一致性,实用于须要每次都从头开始构建的场景。
在 CD 理论利用中,咱们能够灵便的依据我的项目需要和理论的环境抉择适合的构建形式。增量构建实用于疾速迭代和继续集成的场景,而全量构建实用于须要确保镜像齐全一致性的场景。

退出移动版