一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于Docker的项目构建方法、设备及存储介质与流程

2021-10-24 07:49:00 来源:中国专利 TAG:构建 方法 项目 设备 存储介质

一种基于docker的项目构建方法、设备及存储介质
技术领域
1.本发明涉及电数字数据处理技术领域,尤其涉及一种基于docker的项目构建方法、设备及存储介质。


背景技术:

2.通常情况下一个软件项目完成编译后会生成两类文件,项目的第三方依赖文件和项目目标文件。项目目标文件的大小是远远小于第三方依赖文件,50倍至100倍甚至更多。
3.数字摘要是将任意长度的消息变成固定长度的密文,不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。
4.docker是一种容器技术,旨在将一个应用的所需要的所有依赖打包成一个镜像,镜像本身即为一个轻量级的虚拟机,可以运行在任何拥有docker运行环境的linux服务器上,使得开发运维人员不用再关系项目部署时的环境依赖与可能产生的冲突。
5.docker镜像采用的是分层构建的方式,构建时先选定一个基础镜像(基础镜像本身也是存在多层的),然后创建一个新的层,将所要添加的文件放在这个新的层中,若需要修改基础镜像中的文件则会将该文件复制到新层进行修改,之后新层与基础镜像形成一个新的镜像。若多个镜像共同使用了同一个基础镜像,那么在同一个文件系统当中基础镜像部分只会存在一个,再加上若干个新层。若镜像结构为a b1,a b2,a b3

a bn,实际文件系统里面存储的为a b1 b2 b3

bn。
6.当前常见的两种项目构建方案:
7.1.不管依赖和项目目标文件的分层,将依赖和项目目标文件直接作为一层进行构建,该方案的优点为使用简单,但是极其浪费存储空间,分发镜像是也会耗费更多的带宽。
8.2.在变更依赖的同时手动构建依赖镜像,再用依赖镜像构建目标镜像,该方案的优点为一定程度上实现了多次构建时的依赖层复用,节省了存储空间,但是增加了人工步骤存在出错风险,并且若多个项目用了一样的依赖,多个项目又有不同人负责则又会构建出两个内容一致的依赖镜像。


技术实现要素:

9.为了解决上述问题,本发明提出一种基于docker的项目构建方法、设备及存储介质,可同时实现使用简单与节省存储空间使用,减少分发时使用带宽并且降低构建时使用的计算资源。
10.本发明采用的技术方案如下:
11.一种基于docker的项目构建方法,包括:
12.收到项目构建请求后,确定是否需要进行项目构建;
13.在编译完项目代码后,分离项目本身的目标文件部分和第三方依赖部分;
14.确定是否需要进行依赖镜像的构建;
15.将依赖镜像和项目目标文件构建为目标镜像。
16.进一步的,确定是否需要进行项目构建,包括:
17.根据项目代码的文件标识来判断项目是否已经构建;
18.如果已经构建过需要直接返回该文件标识对应的镜像号。
19.进一步的,确定是否需要进行依赖镜像的构建,包括:
20.将所有第三方依赖按照文件名进行升序排序;
21.将所有第三方依赖的内容计算为一个数字摘要;
22.以数字摘要为镜像号进行镜像拉取,若拉取成功则说明镜像存在,则直接获取该依赖镜像;若拉取失败则说明镜像不存在,则将基础环境镜像和第三方依赖打包成依赖镜像,以数字摘要为镜像号推送至镜像仓库;
23.记录已构建的数字摘要。
24.进一步的,将依赖镜像和项目目标文件构建为目标镜像,包括:
25.将项目的版本号和构建的日期作为目标镜像的镜像号;
26.记录项目代码的文件标识和目标镜像的镜像号的映射关系。
27.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现所述的一种基于docker的项目构建方法的步骤。
28.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现所述的一种基于docker的项目构建方法的步骤。
29.本发明在收到项目构建请求后,首先根据项目代码的文件标识确定是否需要进行构建,若需要构建,在对项目完成编译后将项目本身的目标文件与第三方依赖分离,将所有第三方依赖计算成一个数字摘要,然后先将基础环境镜像与第三方依赖进行一次镜像构建,将数字摘要作为镜像号,之后推送至镜像仓库,最后再以依赖镜像为基础将项目本身的目标文件构建为目标镜像。在后续在对项目进行构建时如果第三方依赖没有发生变化,那么计算出来的数字摘要值也不会发生变化,就可以直接从镜像仓库中获取依赖镜像进行后续构建。
30.本发明的有益效果在于:
31.与每次都要进行完整编译过程并将整个项目构建为镜像相比,本发明会判断项目是否已经构建过,并且每次构建实际只会新增一个项目的目标文件层,降低了对计算资源的占用,降低了多级构建后所占用的存储空间,也降低了多次分发时占用的带宽。
附图说明
32.图1是本发明实施例1的基于docker的项目构建方法的流程图。
具体实施方式
33.为了对本发明的技术特征、目的和效果有更加清楚的理解,现说明本发明的具体实施方式。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,即所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
34.实施例1
35.本实施例提供了一种基于docker的项目构建方法,包括以下步骤:
36.s101.收到项目构建请求后,确定是否需要进行项目构建。
37.优选的,根据项目代码的文件标识来判断项目是否已经构建,如果已经构建过需要直接返回该文件标识对应的镜像号。
38.s102.在编译完项目代码后,分离项目本身的目标文件部分和第三方依赖部分。
39.优选的,将第三方依赖归类在一个文件夹中,将项目目标文件放在另一个文件夹中。
40.s103.确定是否需要进行依赖镜像的构建。
41.优选的,将所有第三方依赖按照文件名进行升序排序,并将所有第三方依赖的内容计算为一个数字摘要,以数字摘要为镜像号进行镜像拉取,若拉取成功则说明镜像存在,则直接获取该依赖镜像;若拉取失败则说明镜像不存在,则将基础环境镜像和第三方依赖打包成依赖镜像,以数字摘要为镜像号推送至镜像仓库,最后记录已构建的数字摘要。
42.s104.将依赖镜像和项目目标文件构建为目标镜像。
43.优选的,将项目的版本号和构建的日期作为目标镜像的镜像号,记录项目代码的文件标识和目标镜像的镜像号的映射关系。
44.本实施例的项目构建方法在收到项目构建请求后,首先根据项目代码的文件标识确定是否需要进行构建,若需要构建,在对项目完成编译后将项目本身的目标文件与第三方依赖分离,将所有第三方依赖计算成一个数字摘要,然后先将基础环境镜像与第三方依赖进行一次镜像构建,将数字摘要作为镜像号,之后推送至镜像仓库,最后再以依赖镜像为基础将项目本身的目标文件构建为目标镜像。在后续在对项目进行构建时如果第三方依赖没有发生变化,那么计算出来的数字摘要值也不会发生变化,就可以直接从镜像仓库中获取依赖镜像进行后续构建。
45.因此,与每次都要进行完整编译过程并将整个项目构建为镜像相比,本发明会判断项目是否已经构建过,并且每次构建实际只会新增一个项目的目标文件层,降低了对计算资源的占用,降低了多级构建后所占用的存储空间,也降低了多次分发时占用的带宽。
46.在本实施例的一个优选实施例中,如图1所示,一种基于docker的项目构建方法,包括以下步骤:
47.s201.计算项目代码的数字摘要,从数据库中获取与该摘要对应的目标镜镜像号,若能获取则直接从镜像仓库中获取目标镜像,若不能获取则进入步骤s202;
48.s202.对项目代码进行编译,将第三方依赖归类在一个文件夹中,将项目目标文件放在另一个文件夹中;
49.s203.对第三方依赖文件按照名称进行升序排列,依次计算每一个依赖内容的数字摘要,然后再以这数个数字摘要按照顺序拼接成一个长字符串再计算一次数字摘要,以该数字摘要值为镜像号从镜像仓库中获取依赖镜像,若可以获取则进入步骤s205,若不能获取则进入步骤4;
50.s204.将第三方依赖与基础镜像构建成依赖镜像,以步骤s203计算出来的数字摘要作为镜像号并推送至镜像仓库;
51.s205.使用依赖镜像与项目目标文件构建为目标镜像,并用当前项目版本号加日
志加随机数作为镜像号,推送至镜像仓库,并使用步骤1算出来的代码数字摘要与该镜像号形成映射存入数组库;
52.s206.获得目标镜像。
53.实施例2
54.本实施例在实施例1的基础上:
55.本实施例提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行该计算机程序时实现实施例1的基于docker的项目构建方法的步骤。其中,计算机程序可以为源代码形式、对象代码形式、可执行文件或者某些中间形式等。
56.实施例3
57.本实施例在实施例1的基础上:
58.本实施例提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现实施例1的基于docker的项目构建方法的步骤。其中,计算机程序可以为源代码形式、对象代码形式、可执行文件或者某些中间形式等。存储介质包括:能够携带计算机程序代码的任何实体或装置、记录介质、计算机存储器、只读存储器(rom)、随机存取存储器(ram)、电载波信号、电信信号以及软件分发介质等。需要说明的是,存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,存储介质不包括电载波信号和电信信号。
59.需要说明的是,对于前述的方法实施例,为了简便描述,故将其表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本技术所必须的。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜