CN113535334A - 一种基于Docker的项目构建方法、设备及存储介质 - Google Patents
一种基于Docker的项目构建方法、设备及存储介质 Download PDFInfo
- Publication number
- CN113535334A CN113535334A CN202110941173.3A CN202110941173A CN113535334A CN 113535334 A CN113535334 A CN 113535334A CN 202110941173 A CN202110941173 A CN 202110941173A CN 113535334 A CN113535334 A CN 113535334A
- Authority
- CN
- China
- Prior art keywords
- project
- mirror image
- image
- docker
- construction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于Docker的项目构建方法、设备及存储介质,其中项目构建方法包括:收到项目构建请求后,确定是否需要进行项目构建;在编译完项目代码后,分离项目本身的目标文件部分和第三方依赖部分;确定是否需要进行依赖镜像的构建;将依赖镜像和项目目标文件构建为目标镜像。与每次都要进行完整编译过程并将整个项目构建为镜像相比,本发明会判断项目是否已经构建过,并且每次构建实际只会新增一个项目的目标文件层,降低了对计算资源的占用,降低了多级构建后所占用的存储空间,也降低了多次分发时占用的带宽。
Description
技术领域
本发明涉及电数字数据处理技术领域,尤其涉及一种基于Docker的项目构建方法、设备及存储介质。
背景技术
通常情况下一个软件项目完成编译后会生成两类文件,项目的第三方依赖文件和项目目标文件。项目目标文件的大小是远远小于第三方依赖文件,50倍至100倍甚至更多。
数字摘要是将任意长度的消息变成固定长度的密文,不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。
Docker是一种容器技术,旨在将一个应用的所需要的所有依赖打包成一个镜像,镜像本身即为一个轻量级的虚拟机,可以运行在任何拥有Docker运行环境的Linux服务器上,使得开发运维人员不用再关系项目部署时的环境依赖与可能产生的冲突。
Docker镜像采用的是分层构建的方式,构建时先选定一个基础镜像(基础镜像本身也是存在多层的),然后创建一个新的层,将所要添加的文件放在这个新的层中,若需要修改基础镜像中的文件则会将该文件复制到新层进行修改,之后新层与基础镜像形成一个新的镜像。若多个镜像共同使用了同一个基础镜像,那么在同一个文件系统当中基础镜像部分只会存在一个,再加上若干个新层。若镜像结构为a+b1,a+b2,a+b3…a+bn,实际文件系统里面存储的为a+b1+b2+b3…+bn。
当前常见的两种项目构建方案:
1.不管依赖和项目目标文件的分层,将依赖和项目目标文件直接作为一层进行构建,该方案的优点为使用简单,但是极其浪费存储空间,分发镜像是也会耗费更多的带宽。
2.在变更依赖的同时手动构建依赖镜像,再用依赖镜像构建目标镜像,该方案的优点为一定程度上实现了多次构建时的依赖层复用,节省了存储空间,但是增加了人工步骤存在出错风险,并且若多个项目用了一样的依赖,多个项目又有不同人负责则又会构建出两个内容一致的依赖镜像。
发明内容
为了解决上述问题,本发明提出一种基于Docker的项目构建方法、设备及存储介质,可同时实现使用简单与节省存储空间使用,减少分发时使用带宽并且降低构建时使用的计算资源。
本发明采用的技术方案如下:
一种基于Docker的项目构建方法,包括:
收到项目构建请求后,确定是否需要进行项目构建;
在编译完项目代码后,分离项目本身的目标文件部分和第三方依赖部分;
确定是否需要进行依赖镜像的构建;
将依赖镜像和项目目标文件构建为目标镜像。
进一步的,确定是否需要进行项目构建,包括:
根据项目代码的文件标识来判断项目是否已经构建;
如果已经构建过需要直接返回该文件标识对应的镜像号。
进一步的,确定是否需要进行依赖镜像的构建,包括:
将所有第三方依赖按照文件名进行升序排序;
将所有第三方依赖的内容计算为一个数字摘要;
以数字摘要为镜像号进行镜像拉取,若拉取成功则说明镜像存在,则直接获取该依赖镜像;若拉取失败则说明镜像不存在,则将基础环境镜像和第三方依赖打包成依赖镜像,以数字摘要为镜像号推送至镜像仓库;
记录已构建的数字摘要。
进一步的,将依赖镜像和项目目标文件构建为目标镜像,包括:
将项目的版本号和构建的日期作为目标镜像的镜像号;
记录项目代码的文件标识和目标镜像的镜像号的映射关系。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现所述的一种基于Docker的项目构建方法的步骤。
一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现所述的一种基于Docker的项目构建方法的步骤。
本发明在收到项目构建请求后,首先根据项目代码的文件标识确定是否需要进行构建,若需要构建,在对项目完成编译后将项目本身的目标文件与第三方依赖分离,将所有第三方依赖计算成一个数字摘要,然后先将基础环境镜像与第三方依赖进行一次镜像构建,将数字摘要作为镜像号,之后推送至镜像仓库,最后再以依赖镜像为基础将项目本身的目标文件构建为目标镜像。在后续在对项目进行构建时如果第三方依赖没有发生变化,那么计算出来的数字摘要值也不会发生变化,就可以直接从镜像仓库中获取依赖镜像进行后续构建。
本发明的有益效果在于:
与每次都要进行完整编译过程并将整个项目构建为镜像相比,本发明会判断项目是否已经构建过,并且每次构建实际只会新增一个项目的目标文件层,降低了对计算资源的占用,降低了多级构建后所占用的存储空间,也降低了多次分发时占用的带宽。
附图说明
图1是本发明实施例1的基于Docker的项目构建方法的流程图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现说明本发明的具体实施方式。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,即所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本实施例提供了一种基于Docker的项目构建方法,包括以下步骤:
S101.收到项目构建请求后,确定是否需要进行项目构建。
优选的,根据项目代码的文件标识来判断项目是否已经构建,如果已经构建过需要直接返回该文件标识对应的镜像号。
S102.在编译完项目代码后,分离项目本身的目标文件部分和第三方依赖部分。
优选的,将第三方依赖归类在一个文件夹中,将项目目标文件放在另一个文件夹中。
S103.确定是否需要进行依赖镜像的构建。
优选的,将所有第三方依赖按照文件名进行升序排序,并将所有第三方依赖的内容计算为一个数字摘要,以数字摘要为镜像号进行镜像拉取,若拉取成功则说明镜像存在,则直接获取该依赖镜像;若拉取失败则说明镜像不存在,则将基础环境镜像和第三方依赖打包成依赖镜像,以数字摘要为镜像号推送至镜像仓库,最后记录已构建的数字摘要。
S104.将依赖镜像和项目目标文件构建为目标镜像。
优选的,将项目的版本号和构建的日期作为目标镜像的镜像号,记录项目代码的文件标识和目标镜像的镜像号的映射关系。
本实施例的项目构建方法在收到项目构建请求后,首先根据项目代码的文件标识确定是否需要进行构建,若需要构建,在对项目完成编译后将项目本身的目标文件与第三方依赖分离,将所有第三方依赖计算成一个数字摘要,然后先将基础环境镜像与第三方依赖进行一次镜像构建,将数字摘要作为镜像号,之后推送至镜像仓库,最后再以依赖镜像为基础将项目本身的目标文件构建为目标镜像。在后续在对项目进行构建时如果第三方依赖没有发生变化,那么计算出来的数字摘要值也不会发生变化,就可以直接从镜像仓库中获取依赖镜像进行后续构建。
因此,与每次都要进行完整编译过程并将整个项目构建为镜像相比,本发明会判断项目是否已经构建过,并且每次构建实际只会新增一个项目的目标文件层,降低了对计算资源的占用,降低了多级构建后所占用的存储空间,也降低了多次分发时占用的带宽。
在本实施例的一个优选实施例中,如图1所示,一种基于Docker的项目构建方法,包括以下步骤:
S201.计算项目代码的数字摘要,从数据库中获取与该摘要对应的目标镜镜像号,若能获取则直接从镜像仓库中获取目标镜像,若不能获取则进入步骤S202;
S202.对项目代码进行编译,将第三方依赖归类在一个文件夹中,将项目目标文件放在另一个文件夹中;
S203.对第三方依赖文件按照名称进行升序排列,依次计算每一个依赖内容的数字摘要,然后再以这数个数字摘要按照顺序拼接成一个长字符串再计算一次数字摘要,以该数字摘要值为镜像号从镜像仓库中获取依赖镜像,若可以获取则进入步骤S205,若不能获取则进入步骤4;
S204.将第三方依赖与基础镜像构建成依赖镜像,以步骤S203计算出来的数字摘要作为镜像号并推送至镜像仓库;
S205.使用依赖镜像与项目目标文件构建为目标镜像,并用当前项目版本号加日志加随机数作为镜像号,推送至镜像仓库,并使用步骤1算出来的代码数字摘要与该镜像号形成映射存入数组库;
S206.获得目标镜像。
实施例2
本实施例在实施例1的基础上:
本实施例提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行该计算机程序时实现实施例1的基于Docker的项目构建方法的步骤。其中,计算机程序可以为源代码形式、对象代码形式、可执行文件或者某些中间形式等。
实施例3
本实施例在实施例1的基础上:
本实施例提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现实施例1的基于Docker的项目构建方法的步骤。其中,计算机程序可以为源代码形式、对象代码形式、可执行文件或者某些中间形式等。存储介质包括:能够携带计算机程序代码的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM)、随机存取存储器(RAM)、电载波信号、电信信号以及软件分发介质等。需要说明的是,存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,存储介质不包括电载波信号和电信信号。
需要说明的是,对于前述的方法实施例,为了简便描述,故将其表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
Claims (6)
1.一种基于Docker的项目构建方法,其特征在于,包括:
收到项目构建请求后,确定是否需要进行项目构建;
在编译完项目代码后,分离项目本身的目标文件部分和第三方依赖部分;
确定是否需要进行依赖镜像的构建;
将依赖镜像和项目目标文件构建为目标镜像。
2.根据权利要求1所述的一种基于Docker的项目构建方法,其特征在于,确定是否需要进行项目构建,包括:
根据项目代码的文件标识来判断项目是否已经构建;
如果已经构建过需要直接返回该文件标识对应的镜像号。
3.根据权利要求1所述的一种基于Docker的项目构建方法,其特征在于,确定是否需要进行依赖镜像的构建,包括:
将所有第三方依赖按照文件名进行升序排序;
将所有第三方依赖的内容计算为一个数字摘要;
以数字摘要为镜像号进行镜像拉取,若拉取成功则说明镜像存在,则直接获取该依赖镜像;若拉取失败则说明镜像不存在,则将基础环境镜像和第三方依赖打包成依赖镜像,以数字摘要为镜像号推送至镜像仓库;
记录已构建的数字摘要。
4.根据权利要求1所述的一种基于Docker的项目构建方法,其特征在于,将依赖镜像和项目目标文件构建为目标镜像,包括:
将项目的版本号和构建的日期作为目标镜像的镜像号;
记录项目代码的文件标识和目标镜像的镜像号的映射关系。
5.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1-4任一项所述的一种基于Docker的项目构建方法的步骤。
6.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-4任一项所述的一种基于Docker的项目构建方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110941173.3A CN113535334B (zh) | 2021-08-17 | 2021-08-17 | 一种基于Docker的项目构建方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110941173.3A CN113535334B (zh) | 2021-08-17 | 2021-08-17 | 一种基于Docker的项目构建方法、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113535334A true CN113535334A (zh) | 2021-10-22 |
CN113535334B CN113535334B (zh) | 2023-09-05 |
Family
ID=78091720
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110941173.3A Active CN113535334B (zh) | 2021-08-17 | 2021-08-17 | 一种基于Docker的项目构建方法、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113535334B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200287723A1 (en) * | 2019-03-06 | 2020-09-10 | Portshift Software Technologies LTD. | Identity-based security platform and methods |
CN111897551A (zh) * | 2020-08-03 | 2020-11-06 | 上海嗨酷强供应链信息技术有限公司 | 一种云环境下快速克隆软件环境的平台及方法 |
CN112181584A (zh) * | 2019-07-02 | 2021-01-05 | 国际商业机器公司 | 优化用于容器仓库的镜像重构 |
CN112379969A (zh) * | 2020-11-13 | 2021-02-19 | 中国人寿保险股份有限公司 | 一种基于容器化应用的持续集成交付方法及相关设备 |
CN112506613A (zh) * | 2020-12-11 | 2021-03-16 | 四川长虹电器股份有限公司 | Gitlab-ci自动识别Maven变更子模块并推送docker镜像的方法 |
CN112650553A (zh) * | 2020-12-09 | 2021-04-13 | 湖南麒麟信安科技股份有限公司 | 一种通用的容器管理方法及系统 |
CN112732285A (zh) * | 2021-04-02 | 2021-04-30 | 北京易捷思达科技发展有限公司 | 适用于云计算linux操作系统的升级方法、装置及电子设备 |
CN112925536A (zh) * | 2021-03-26 | 2021-06-08 | 平安科技(深圳)有限公司 | 虚拟机系统镜像处理方法、装置、设备及存储介质 |
-
2021
- 2021-08-17 CN CN202110941173.3A patent/CN113535334B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200287723A1 (en) * | 2019-03-06 | 2020-09-10 | Portshift Software Technologies LTD. | Identity-based security platform and methods |
CN112181584A (zh) * | 2019-07-02 | 2021-01-05 | 国际商业机器公司 | 优化用于容器仓库的镜像重构 |
CN111897551A (zh) * | 2020-08-03 | 2020-11-06 | 上海嗨酷强供应链信息技术有限公司 | 一种云环境下快速克隆软件环境的平台及方法 |
CN112379969A (zh) * | 2020-11-13 | 2021-02-19 | 中国人寿保险股份有限公司 | 一种基于容器化应用的持续集成交付方法及相关设备 |
CN112650553A (zh) * | 2020-12-09 | 2021-04-13 | 湖南麒麟信安科技股份有限公司 | 一种通用的容器管理方法及系统 |
CN112506613A (zh) * | 2020-12-11 | 2021-03-16 | 四川长虹电器股份有限公司 | Gitlab-ci自动识别Maven变更子模块并推送docker镜像的方法 |
CN112925536A (zh) * | 2021-03-26 | 2021-06-08 | 平安科技(深圳)有限公司 | 虚拟机系统镜像处理方法、装置、设备及存储介质 |
CN112732285A (zh) * | 2021-04-02 | 2021-04-30 | 北京易捷思达科技发展有限公司 | 适用于云计算linux操作系统的升级方法、装置及电子设备 |
Non-Patent Citations (3)
Title |
---|
CHINMAYA KUMAR DEHURY: ""CCoDaMiC: A framework for Coherent Coordination of Data Migration and Computation platforms"", 《FUTURE GENERATION COMPUTER SYSTEMS》, vol. 109, pages 1 - 16 * |
虎皮XXL: ""Docker打包深度学习项目(解决:Opencv依赖库、共享内存)"", pages 1 - 5, Retrieved from the Internet <URL:《https://zhuanlan.zhihu.com/p/267693768》> * |
辜聪林: ""云平台中虚拟镜像版本控制服务的研究与实现"", 《中国优秀硕士学位论文全文数据库 信息科技辑》, no. 2019, pages 137 - 4 * |
Also Published As
Publication number | Publication date |
---|---|
CN113535334B (zh) | 2023-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109918079B (zh) | 规则引擎系统的规则更新方法、装置和计算机设备 | |
CN112037061A (zh) | 区块链中交易的处理方法、装置、电子设备及存储介质 | |
CN112579692B (zh) | 一种数据同步方法、装置、系统、设备及存储介质 | |
CN109672608B (zh) | 根据时间发送消息的方法 | |
CN106844288B (zh) | 一种随机字符串生成方法及装置 | |
CN104834660A (zh) | 基于区间的模糊数据库搜索 | |
CN110795143B (zh) | 用于处理功能模块的方法、装置、计算设备以及介质 | |
CN112748866B (zh) | 一种增量索引数据的处理方法和装置 | |
CN111078553B (zh) | 数据开发任务测试方法、装置、计算机设备和存储介质 | |
CN105468412A (zh) | 动态打包方法和装置 | |
CN112711624B (zh) | 数据打包控制方法、装置、电子设备和存储介质 | |
CN112734586A (zh) | 基于区块链的数据处理方法及系统 | |
CN113535334B (zh) | 一种基于Docker的项目构建方法、设备及存储介质 | |
CN111311150B (zh) | 配送任务分组方法、平台、电子设备及存储介质 | |
CN111399864B (zh) | 一种安卓系统应用程序基础包生成方法以及生成装置 | |
CN108073404A (zh) | 一种补丁包的加载方法、封装方法及装置 | |
CN113312075A (zh) | 配置信息下发方法、装置、存储介质及处理器 | |
CN115756733B (zh) | 一种容器镜像调用系统和容器镜像调用方法 | |
CN116579585B (zh) | 资源分配方法、装置、计算机设备和存储介质 | |
CN111381831A (zh) | 应用部署方法和服务器 | |
US20230297949A1 (en) | Information processing device, information processing method, computer program product, and information processing system | |
CN118276878B (zh) | 多平台的模型部署方法、设备及存储介质 | |
CN113129049B (zh) | 用于模型训练和应用的文件配置方法和系统 | |
CN115658217A (zh) | 容器应用的处理方法、电子设备及计算机可读存储介质 | |
CN118210781A (zh) | 兼容数据库生成方法和计算设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 611731 No. 99, Tianquan Road, high tech Zone, Chengdu, Sichuan Applicant after: Chengdu Great Wall Development Technology Co.,Ltd. Address before: 611731 no.1218, Hezuo Road, high tech Zone (West District), Chengdu, Sichuan Province Applicant before: CHENGDU GREAT WALL DEVELOPMENT TECHNOLOGY Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |