CN113127136A - Docker镜像生成方法及装置、存储介质、电子设备 - Google Patents
Docker镜像生成方法及装置、存储介质、电子设备 Download PDFInfo
- Publication number
- CN113127136A CN113127136A CN201911394641.9A CN201911394641A CN113127136A CN 113127136 A CN113127136 A CN 113127136A CN 201911394641 A CN201911394641 A CN 201911394641A CN 113127136 A CN113127136 A CN 113127136A
- Authority
- CN
- China
- Prior art keywords
- code
- docker
- mirror image
- language
- image generation
- 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
- 238000000034 method Methods 0.000 title claims abstract description 87
- 238000010276 construction Methods 0.000 claims abstract description 28
- 238000012545 processing Methods 0.000 claims description 12
- 238000004806 packaging method and process Methods 0.000 claims description 5
- 230000006835 compression Effects 0.000 claims description 4
- 238000007906 compression Methods 0.000 claims description 4
- 238000004590 computer program Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 abstract description 17
- 238000011161 development Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 6
- 230000010354 integration Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000012827 research and development Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 244000035744 Hura crepitans Species 0.000 description 1
- 235000012096 Syzygium samarangense Nutrition 0.000 description 1
- 244000234181 Syzygium samarangense Species 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000000739 chaotic effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
Abstract
本公开属于计算机技术领域,涉及一种Docker镜像生成方法及装置、存储介质、电子设备。该方法包括:接收代码仓库发送的Dcoker镜像的构建请求,构建请求中包括代码下载地址;根据代码下载地址下载目标代码,并对目标代码进行分析确定目标代码的代码语言;根据代码语言确定目标代码的Docker镜像生成方式,并按照Docker镜像生成方式生成Docker镜像。本公开一方面,解决了多种代码语言生成Docker镜像的环境需求成本高的问题,避免了复杂的配置过程,能够适应于更广泛的使用需求;另一方面,构建有统一的版本管理方式,使得构建流程更加自动化,减少了人力成本,提高了Docker镜像的生成效率。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种Docker镜像生成方法与Docker镜像生成装置、计算机可读存储介质及电子设备。
背景技术
Docker是一个开放源代码软件项目,让应用程序部署在软件容器下的工作可以自动化进行。在应用开发过程中,需要持续不断地执行开发、部署、测试的过程,而将代码编译打包成Docker镜像是应用部署、发布、运维管理的基础。因此,针对不同语言的Docker镜像的生成效率极大地影响着应用的开发效率。
在一般的软件开发过程中,不同语言和工具在构建Docker镜像的环境是各不相同的,对Docker镜像的构建方式也各成体系,对环境需求成本较高。并且,各个研发人员对自己产出的Docker镜像运用自己的格式和命名方式进行管理,这种管理方式十分混乱,且消耗人工时间。
鉴于此,本领域亟需开发一种新的Docker镜像生成方法及装置。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种Docker镜像生成方法、Docker镜像生成装置、计算机可读存储介质及电子设备,进而至少在一定程度上克服由于相关技术的限制而导致的环境成本高和管理混乱等问题。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的一个方面,提供一种Docker镜像生成方法,所述方法包括:接收代码仓库发送的Dcoker镜像的构建请求,所述构建请求中包括代码下载地址;根据所述代码下载地址下载目标代码,并对所述目标代码进行分析确定所述目标代码的代码语言;根据所述代码语言确定所述目标代码的Docker镜像生成方式,并按照所述Docker镜像生成方式生成所述Docker镜像。
在本公开的一种示例性实施例中,所述方法还包括:获取所述代码仓库的名称信息、所述代码下载地址的标识信息和所述目标代码所在的代码分支的分支信息;根据所述名称信息、所述标识信息和所述分支信息对所述Docker镜像进行命名。
在本公开的一种示例性实施例中,所述代码语言包括:C++语言、Java语言和Python语言。
在本公开的一种示例性实施例中,所述根据所述代码语言确定所述目标代码的Docker镜像生成方式,并按照所述Docker镜像生成方式生成Docker镜像,包括:当所述代码语言为所述C++语言时,获取与所述目标代码对应的第一配置文件;对所述第一配置文件进行编译和链接生成可执行程序,以将所述可执行程序作为所述C++语言的Docker镜像。
在本公开的一种示例性实施例中,所述根据所述代码语言确定所述目标代码的Docker镜像生成方式,并按照所述Docker镜像生成方式生成Docker镜像,包括:当所述代码语言为所述Java语言时,获取与所述目标代码对应的第二配置文件;利用Maven插件对所述第二配置文件进行解析生成Jar包文件,以将所述Jar包文件作为所述Java语言的Docker镜像。
在本公开的一种示例性实施例中,所述根据所述代码语言确定所述目标代码的Docker镜像生成方式,并按照所述Docker镜像生成方式生成Docker镜像,包括:当所述代码语言为所述Python语言时,获取与所述目标代码对应的第三配置文件;对所述第三配置文件进行压缩打包处理生成Python包文件,以将所述Python包文件作为所述Python语言的Docker镜像。
在本公开的一种示例性实施例中,所述方法还包括:获取与所述Docker镜像对应的镜像仓库信息,并根据所述镜像仓库信息确定镜像仓库;将所述Docker镜像上传至所述镜像仓库中。
根据本公开的一个方面,提供一种Docker镜像生成装置,所述装置包括:请求接收模块,被配置为接收代码仓库发送的Dcoker镜像的构建请求,所述构建请求中包括代码下载地址;语言确定模块,被配置为根据所述代码下载地址下载目标代码,并对所述目标代码进行分析确定所述目标代码的代码语言;镜像生成模块,被配置为根据所述代码语言确定所述目标代码的Docker镜像生成方式,并按照所述Docker镜像生成方式生成所述Docker镜像。
根据本公开的一个方面,提供一种电子设备,包括:处理器和存储器;其中,存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现上述任意示例性实施例的Docker镜像生成方法。
根据本公开的一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意示例性实施例中的Docker镜像生成方法。
由上述技术方案可知,本公开示例性实施例中的Docker镜像生成方法、Docker镜像生成装置、计算机存储介质及电子设备至少具备以下优点和积极效果:
在本公开的示例性实施例提供的方法及装置中,通过对代码仓库提交的目标代码的语言判定,可以确定各代码语言对应的Docker镜像生成方式,进一步实现生成对应的Docker镜像的功能。一方面,解决了多种代码语言生成Docker镜像的环境需求成本高的问题,避免了复杂的配置过程,能够适应于更广泛的使用需求;另一方面,构建有统一的版本管理方式,使得构建流程更加自动化,减少了人力成本,提高了Docker镜像的生成效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示意性示出本公开示例性实施例中一种Docker镜像生成方法的流程图;
图2示意性示出本公开示例性实施例中一种生成Docker镜像的方法的流程示意图;
图3示意性示出本公开示例性实施例中另一种生成Docker镜像的方法的流程示意图;
图4示意性示出本公开示例性实施例中再一种生成Docker镜像的方法的流程示意图;
图5示意性示出本公开示例性实施例中对Docker镜像命名的方法的流程示意图;
图6示意性示出本公开示例性实施例中上传Docker镜像的方法的流程示意图;
图7示意性示出本公开示例性实施例中应用场景下的Docker镜像生成方法的流程示意图;
图8示意性示出本公开示例性实施例中应用场景下构建机器构建Docker镜像的方法的流程示意图;
图9示意性示出本公开示例性实施例中一种Docker镜像生成装置的结构示意图;
图10示意性示出本公开示例性实施例中一种用于实现Docker镜像生成方法的电子设备;
图11示意性示出本公开示例性实施例中一种用于实现Docker镜像生成方法的计算机可读存储介质。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
本说明书中使用用语“一个”、“一”、“该”和“所述”用以表示存在一个或多个要素/组成部分/等;用语“包括”和“具有”用以表示开放式的包括在内的意思并且是指除了列出的要素/组成部分/等之外还可存在另外的要素/组成部分/等;用语“第一”和“第二”等仅作为标记使用,不是对其对象的数量限制。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。
针对相关技术中存在的问题,本公开提出了一种Docker镜像生成方法。图1示出了Docker镜像生成方法的流程图,如图1所示,Docker镜像生成方法至少包括以下步骤:
步骤S110.接收代码仓库发送的Dcoker镜像的构建请求,构建请求中包括代码下载地址。
步骤S120.根据代码下载地址下载目标代码,并对目标代码进行分析确定目标代码的代码语言。
步骤S130.根据代码语言确定目标代码的Docker镜像生成方式,并按照Docker镜像生成方式生成Docker镜像。
在本公开的示例性实施例中,通过对代码仓库提交的目标代码的语言判定,可以确定各代码语言对应的Docker镜像生成方式,进一步实现生成对应的Docker镜像的功能。一方面,解决了多种代码语言生成Docker镜像的环境需求成本高的问题,避免了复杂的配置过程,能够适应于更广泛的使用需求;另一方面,构建有统一的版本管理方式,使得构建流程更加自动化,减少了人力成本,提高了Docker镜像的生成效率。
下面对Docker镜像生成方法的各个步骤进行详细说明。
在步骤S110中,接收代码仓库发送的Dcoker镜像的构建请求,构建请求中包括代码下载地址。
在本公开的示例性实施例中,实际项目开发过程中,可能会有多个代码仓库。例如,在经典的网页(Web)开发模式“模式-视图-控制器”(Model-View-Controller,简称MVC)中,模式层和控制器层可能由后端团队开发,视图层由前端团队开发。考虑到前、后端技术分离,以及便于团队管理等原因,整个项目被分拆为两个代码仓库,分别由不同的团队负责开发。在一般的软件开发过程中,每个成员完成项目工作后开始完成整合工作。而整合工作一般需要数周或者数个月时间,并且过程极其痛苦。持续集成(Continuous Integration,简称CI)是一种在早期开发过程中,每天数次的合并代码到主干,持续地进行构建、测试和集成代码。持续集成强调开发人员提交新代码之后,立刻进行构建和单元测试等。在开发完成后,采用持续集成进行项目构建,可快速构建并测试团队成员提交的代码,大大缩减开发成本。
在持续集成中涉及到的代码仓库中存放着代码文件。针对一个应用程序可以配置有多个代码仓库,对代码文件的编写进行更合理的分工,且减少代码文件之间的耦合度,更利于团队内分工协作。
在代码仓库发送Docker镜像的构建请求之前,可以对研发人员提交的代码的格式进行判定。若代码的格式是例如C++、Java和Python等具有对应的生成Docker镜像方式的格式,可以根据研发人员对代码仓库的设置细节发送构建请求;若代码的格式不具有对应的生成Docker镜像方式的格式,可以不触发发送构建请求。
其中,Docker是一个开源的应用容器引擎,让研发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全适用沙箱机制的,相互之间不会有任何接口。Docker镜像是根据Docker规定的格式生成的只读文件包,可以将应用封装在该Docker镜像中,并发送到不同的主机上,以通过Docker镜像启动软件容器运行服务。
当代码仓库发送Docker镜像的构建请求时,该构建请求中包括代码下载地址。代码下载地址用于表征GitLab中的路径信息。在该路径下存储有生成Docker镜像所需的代码。因此,该代码下载地址具体可以为代码在GitLab中的位置。
其中,Git是一款自由和开源的分布式版本控制系统,用于敏捷高效地处理任何大型或小型项目。GitLab是一个开源应用程序,实现了一个自托管的Git项目仓库,即GitLab,研发人员可以通过Web界面对GitLab的公开项目或者私人项目进行访问。
在步骤S120中,根据代码下载地址下载目标代码,并对目标代码进行分析确定目标代码的代码语言。
在本公开的示例性实施例中,根据代码下载地址可以在GitLab中确定目标代码的保存位置,在该保存位置中下载目标代码。
在下载到目标代码之后,可以对目标代码的代码语言进行分析。
在可选的实施例中,代码语言包括:C++语言、Java语言和Python语言。若下载到的目标代码的文件中有以“makefile”命名的文件,确定目标代码的代码语言为C++语言;若下载到的目标代码的文件中有以“pom.xml”命名的文件,确定目标代码的代码语言为Java语言;若下载到的目标代码的文件中有以“hetup.py”命名的文件,确定目标代码的代码语言为Python语言。对于其他语言的目标代码,也可以有对应的判定方式,本示例性实施例对此不做特殊限定。
在步骤S130中,根据代码语言确定目标代码的Docker镜像生成方式,并按照Docker镜像生成方式生成Docker镜像。
在本公开的示例性实施例中,对于不同的代码语言可以有不同的Docker镜像生成方式。图2、图3和图4分别给出了针对C++语言、Java语言和Python语言的生成方式。
在可选的实施例中,图2示出了一种生成Docker镜像的方法的流程示意图,如图2所示,该方法至少包括以下步骤:在步骤S210中,当代码语言为C++语言时,获取与目标代码对应的第一配置文件。该第一配置文件可以是识别C++语言的识别文件,例如命名为“makefile”的文件。除此之外,也可以是其他可以识别C++语言的文件,本示例性实施例对此不做特殊限定。
在步骤S220中,对第一配置文件进行编译和链接生成可执行程序,以将可执行程序作为C++语言的Docker镜像。对第一配置文件的编译可以经过词法分析、语法分析、语义分析、中间语言生成和目标代码生成与优化几个过程,生成代码。在编译过后,进一步的通过链接器对代码进行链接。一个程序在修改时被分割为多个模块,模块之间通过符号进行通信,并通过链接器对模块进行拼接就是链接。在链接之后,可以生成C++可执行程序,并将该C++可执行程序作为C++语言时的构建产物,亦即C++语言的Docker镜像。
在本示例性实施例中,针对C++语言给出了构建对应的Docker镜像的方法,针对性强,Docker镜像的生成效率高,能够适应更广泛的使用需求。
在可选的实施例中,图3示出了另一种生成Docker镜像的方法的流程示意图,如图3所示,该方法至少包括以下步骤:在步骤S310中,当代码语言为Java语言时,获取与目标代码对应的第二配置文件。该第二配置文件可以是识别Java语言的识别文件,例如命名为“pom.xml”的文件。除此之外,也可以是其他可以识别Java语言的文件,本示例性实施例对此不做特殊限定。
在步骤S320中,利用Maven插件对第二配置文件进行解析生成Jar包文件,以将Jar包文件作为Java语言的Docker镜像。其中,Maven插件是用来编译Java语言的源代码的插件。因此,通过Maven插件对第二配置文件中的源代码进行解析等处理可以生成Java语言的产物,即Jar包文件。进一步的,将该Jar包文件作为Java语言的Docker镜像。
在本示例性实施例中,针对Java语言给出了构建对应的Docker镜像的方法,针对性强,Docker镜像的生成效率高,能够适应更广泛的使用需求。
在可选的实施例中,图4示出了再一种生成Docker镜像的方法的流程示意图,如图4所示,该方法至少包括以下步骤:在步骤S410中,当代码语言为Python语言时,获取与目标代码对应的第三配置文件。该第二配置文件可以是识别Python语言的识别文件,例如命名为“hetup.py”的文件。除此之外,也可以是其他可以识别Python语言的文件,本示例性实施例对此不做特殊限定。
在步骤S420中,对第三配置文件进行压缩打包处理生成Python包文件,以将Python包文件作为Python语言的Docker镜像。第三配置文件可以是一个Python语言的文件夹,里面有多个Python语言的文件组成。在对第三配置文件进行压缩打包处理之前,可以将多个Python语言的文件保存在一个文件中。因此,对这一个文件进行压缩打包处理可以生成对应的Python包文件。进一步的,将该Python包文件作为Python语言的Docker镜像。
在本示例性实施例中,针对Python语言给出了构建对应的Docker镜像的方法,针对性强,Docker镜像的生成效率高,能够适应更广泛的使用需求。
值得说明的是,对于其他未提到的开发语言,也对应有生成Docker镜像的生成方式,鉴于开发语言过多,在此不再赘述。
为了建立统一的版本管理,在生成各种开发语言对应的Docker镜像之后,还可以对Docker镜像进行统一格式的命名。
在可选的实施例中,图5示出了对Docker镜像命名的方法的流程示意图,如图5所示,该方法至少包括以下步骤:在步骤S510中,获取代码仓库的名称信息、代码下载地址的标识信息和目标代码所在的代码分支的分支信息。代码仓库的名称信息可以是代码仓库的名称缩写,举例而言,名称缩写可以是“Java123”、“Java苹果”等,本示例性实施例对此不做特殊限定。代码下载地址的标识信息可以是代码仓库提交代码时的流水号等用于识别提交的代码的信息,也可以是其他唯一的标识信息,本示例性实施例对此不做特殊限定。目标代码所在的代码分支的分支信息可以是分支的名称信息,用于指示目标代码所在的分支,也可以是其他分支信息,本示例性实施例对此不做特殊限定。
在步骤S520中,根据名称信息、标识信息和分支信息对Docker镜像进行命名。在确定名称信息、标识信息和分支信息之后,可以通过“名称信息+标识信息+分支信息”的方式对Docker镜像进行命名。除此之外,也可以通过其他组合方式进行命名,本示例性实施例对此不做特殊限定。
在对Docker镜像进行统一命名,生成唯一的版本之后,可以上传该Docker镜像。
在可选的实施例中,图6示出了上传Docker镜像的方法的流程示意图,如图6所示,该方法至少包括以下步骤:在步骤S610中,获取与Dcoker镜像对应的镜像仓库信息,并根据镜像仓库信息确定镜像仓库。其中,镜像仓库是Docker镜像的集中存放仓库,不同的主机可以从该仓库中下载已生成的Docker镜像。镜像仓库信息用于指示生成的Dcoker镜像所要存放到的镜像仓库。
在步骤S620中,将Docker镜像上传至镜像仓库中。根据镜像仓库信息确定镜像仓库之后,可以上传Docker镜像,以便于Docker镜像的集中管理,以及方便研发人员通过主机能够从镜像仓库下载Docker镜像。
下面结合一应用场景对本公开实施例中的Docker镜像生成方法做出详细说明。
图7示出了应用场景下的Docker镜像生成方法的流程示意图,如图7所示,在步骤S710中,研发人员向代码仓库提交代码。
在步骤S720中,判断代码仓库提交的代码是否满足构建条件。判断方式可以是代码的格式是否是可以构建产物的格式。进一步的,将满足构建条件的代码确定为目标代码。
在步骤S730中,当满足构建条件时,可以将目标代码发往构建机器,以使构建机器针对不同语言的目标代码构建产物,亦即生成Docker镜像。
具体的,图8示出了应用场景下构建机器构建Docker镜像的方法的流程示意图,如图8所示,在构建机器集群上搭建有自研构建工具。
在步骤S810中,该自研构建工具可以分析目标代码的机构,以确定目标代码的语言。
在步骤S820中,目标代码的语言可以是Python语言、Java语言和C++语言。针对不同的开发语言,可以使用对应的方法构建出Docker镜像。
在步骤S830中,当生成Docker镜像之后,可以通过“代码仓库缩写+提交代码的流水号+代码所在的分支名”的方式命名该Docker镜像,以生成与该目标代码对应的版本。因此,不同的研发人员可以生成统一格式的版本,构建统一的版本管理。
在步骤S740中,将已命名的Docker镜像可以作为不同开发语言的构建产物,并上传至对应的镜像仓库中。
在本公开的示例性实施例中,通过对代码仓库提交的目标代码的语言判定,可以确定各代码语言对应的Docker镜像生成方式,进一步实现生成对应的Docker镜像的功能。一方面,解决了多种代码语言生成Docker镜像的环境需求成本高的问题,避免了复杂的配置过程,能够适应于更广泛的使用需求;另一方面,构建有统一的版本管理方式,使得构建流程更加自动化,减少了人力成本,提高了Docker镜像的生成效率。
此外,在本公开的示例性实施例中,还提供一种Docker镜像生成装置。图9示出了Docker镜像生成装置的结构示意图,如图9所示,Docker镜像生成装置900可以包括:请求接收模块910、语言确定模块920和镜像生成模块930。其中:
请求接收模块910,被配置为接收代码仓库发送的Dcoker镜像的构建请求,构建请求中包括代码下载地址;语言确定模块920,被配置为根据代码下载地址下载目标代码,并对目标代码进行分析确定目标代码的代码语言;镜像生成模块930,被配置为根据代码语言确定目标代码的Docker镜像生成方式,并按照Docker镜像生成方式生成Docker镜像。
上述Docker镜像生成装置的具体细节已经在对应的Docker镜像生成方法中进行了详细的描述,因此此处不再赘述。
应当注意,尽管在上文详细描述中提及了Docker镜像生成装置900的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
下面参照图10来描述根据本发明的这种实施例的电子设备1000。图10显示的电子设备1000仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图10所示,电子设备1000以通用计算设备的形式表现。电子设备1000的组件可以包括但不限于:上述至少一个处理单元1010、上述至少一个存储单元1020、连接不同系统组件(包括存储单元1020和处理单元1010)的总线1030、显示单元1040。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元1010执行,使得所述处理单元1010执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施例的步骤。
存储单元1020可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)1021和/或高速缓存存储单元1022,还可以进一步包括只读存储单元(ROM)1023。
存储单元1020还可以包括具有一组(至少一个)程序模块1025的程序/实用工具1024,这样的程序模块1025包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线1030可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备1000也可以与一个或多个外部设备1200(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备1000交互的设备通信,和/或与使得该电子设备1000能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口1050进行。并且,电子设备1000还可以通过网络适配器1060与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器1040通过总线1030与电子设备1000的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1000使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施例的方法。
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施例中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施例的步骤。
参考图11所示,描述了根据本发明的实施例的用于实现上述方法的程序产品1100,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施例。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
Claims (10)
1.一种Docker镜像生成方法,其特征在于,所述方法包括:
接收代码仓库发送的Dcoker镜像的构建请求,所述构建请求中包括代码下载地址;
根据所述代码下载地址下载目标代码,并对所述目标代码进行分析确定所述目标代码的代码语言;
根据所述代码语言确定所述目标代码的Docker镜像生成方式,并按照所述Docker镜像生成方式生成所述Docker镜像。
2.根据权利要求1所述的Docker镜像生成方法,其特征在于,所述方法还包括:
获取所述代码仓库的名称信息、所述代码下载地址的标识信息和所述目标代码所在的代码分支的分支信息;
根据所述名称信息、所述标识信息和所述分支信息对所述Docker镜像进行命名。
3.根据权利要求1所述的Docker镜像生成方法,其特征在于,所述代码语言包括:C++语言、Java语言和Python语言。
4.根据权利要求3所述的Docker镜像生成方法,其特征在于,所述根据所述代码语言确定所述目标代码的Docker镜像生成方式,并按照所述Docker镜像生成方式生成Docker镜像,包括:
当所述代码语言为所述C++语言时,获取与所述目标代码对应的第一配置文件;
对所述第一配置文件进行编译和链接生成可执行程序,以将所述可执行程序作为所述C++语言的Docker镜像。
5.根据权利要求3所述的Docker镜像生成方法,其特征在于,所述根据所述代码语言确定所述目标代码的Docker镜像生成方式,并按照所述Docker镜像生成方式生成Docker镜像,包括:
当所述代码语言为所述Java语言时,获取与所述目标代码对应的第二配置文件;
利用Maven插件对所述第二配置文件进行解析生成Jar包文件,以将所述Jar包文件作为所述Java语言的Docker镜像。
6.根据权利要求3所述的Docker镜像生成方法,其特征在于,所述根据所述代码语言确定所述目标代码的Docker镜像生成方式,并按照所述Docker镜像生成方式生成Docker镜像,包括:
当所述代码语言为所述Python语言时,获取与所述目标代码对应的第三配置文件;
对所述第三配置文件进行压缩打包处理生成Python包文件,以将所述Python包文件作为所述Python语言的Docker镜像。
7.根据权利要求1所述的Docker镜像生成方法,其特征在于,所述方法还包括:
获取与所述Docker镜像对应的镜像仓库信息,并根据所述镜像仓库信息确定镜像仓库;
将所述Docker镜像上传至所述镜像仓库中。
8.一种Docker镜像生成装置,其特征在于,包括:
请求接收模块,被配置为接收代码仓库发送的Dcoker镜像的构建请求,所述构建请求中包括代码下载地址;
语言确定模块,被配置为根据所述代码下载地址下载目标代码,并对所述目标代码进行分析确定所述目标代码的代码语言;
镜像生成模块,被配置为根据所述代码语言确定所述目标代码的Docker镜像生成方式,并按照所述Docker镜像生成方式生成所述Docker镜像。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被发送器执行时实现权利要求1-7中任意一项所述的Docker镜像生成方法。
10.一种电子设备,其特征在于,包括:
发送器;
存储器,用于存储所述发送器的可执行指令;
其中,所述发送器被配置为经由执行所述可执行指令来执行权利要求1-7中任意一项所述的Docker镜像生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911394641.9A CN113127136B (zh) | 2019-12-30 | 2019-12-30 | Docker镜像生成方法及装置、存储介质、电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911394641.9A CN113127136B (zh) | 2019-12-30 | 2019-12-30 | Docker镜像生成方法及装置、存储介质、电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113127136A true CN113127136A (zh) | 2021-07-16 |
CN113127136B CN113127136B (zh) | 2023-12-12 |
Family
ID=76767802
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911394641.9A Active CN113127136B (zh) | 2019-12-30 | 2019-12-30 | Docker镜像生成方法及装置、存储介质、电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113127136B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113835683A (zh) * | 2021-09-17 | 2021-12-24 | 博锐尚格科技股份有限公司 | 一种目标程序的镜像制作方法和装置 |
CN114047938A (zh) * | 2022-01-11 | 2022-02-15 | 北京云歌科技有限责任公司 | 一种构建镜像的方法、装置、设备及可读存储介质 |
CN116301950A (zh) * | 2023-05-15 | 2023-06-23 | 北京中诺链捷数字科技有限公司 | Docker镜像生成方法、装置、设备和存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050198100A1 (en) * | 2004-02-27 | 2005-09-08 | Goring Bryan R. | System and method for building component applications using metadata defined mapping between message and data domains |
US20060168355A1 (en) * | 2005-01-24 | 2006-07-27 | Michael Shenfield | System and method for provisioning component applications |
CN104793946A (zh) * | 2015-04-27 | 2015-07-22 | 广州杰赛科技股份有限公司 | 基于云计算平台的应用部署方法和系统 |
CN106933635A (zh) * | 2017-03-15 | 2017-07-07 | 北京搜狐新媒体信息技术有限公司 | Docker镜像生成方法及Docker容器 |
US20180032355A1 (en) * | 2016-07-31 | 2018-02-01 | Oracle International Corporation | Container-based language runtime loading an isolated method |
CN108196915A (zh) * | 2018-02-06 | 2018-06-22 | 杭州朗和科技有限公司 | 基于应用容器引擎的代码处理方法、设备及存储介质 |
CN109101269A (zh) * | 2018-08-30 | 2018-12-28 | 长沙软工信息科技有限公司 | 一种软件交付方法及装置、电子设备 |
CN109240662A (zh) * | 2018-08-09 | 2019-01-18 | 赛尔网络有限公司 | 一种基于云平台的软件开发方法、云平台、设备及介质 |
CN109324799A (zh) * | 2018-09-25 | 2019-02-12 | 珠海市筑巢科技有限公司 | 一种代码编译方法、计算机装置及计算机可读存储介质 |
US20190251013A1 (en) * | 2017-04-14 | 2019-08-15 | Ca, Inc. | Validation of containers |
-
2019
- 2019-12-30 CN CN201911394641.9A patent/CN113127136B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050198100A1 (en) * | 2004-02-27 | 2005-09-08 | Goring Bryan R. | System and method for building component applications using metadata defined mapping between message and data domains |
US20060168355A1 (en) * | 2005-01-24 | 2006-07-27 | Michael Shenfield | System and method for provisioning component applications |
CN104793946A (zh) * | 2015-04-27 | 2015-07-22 | 广州杰赛科技股份有限公司 | 基于云计算平台的应用部署方法和系统 |
US20180032355A1 (en) * | 2016-07-31 | 2018-02-01 | Oracle International Corporation | Container-based language runtime loading an isolated method |
CN106933635A (zh) * | 2017-03-15 | 2017-07-07 | 北京搜狐新媒体信息技术有限公司 | Docker镜像生成方法及Docker容器 |
US20190251013A1 (en) * | 2017-04-14 | 2019-08-15 | Ca, Inc. | Validation of containers |
CN108196915A (zh) * | 2018-02-06 | 2018-06-22 | 杭州朗和科技有限公司 | 基于应用容器引擎的代码处理方法、设备及存储介质 |
CN109240662A (zh) * | 2018-08-09 | 2019-01-18 | 赛尔网络有限公司 | 一种基于云平台的软件开发方法、云平台、设备及介质 |
CN109101269A (zh) * | 2018-08-30 | 2018-12-28 | 长沙软工信息科技有限公司 | 一种软件交付方法及装置、电子设备 |
CN109324799A (zh) * | 2018-09-25 | 2019-02-12 | 珠海市筑巢科技有限公司 | 一种代码编译方法、计算机装置及计算机可读存储介质 |
Non-Patent Citations (2)
Title |
---|
DAVID JARAMILLO等: "Leveraging microservices architecture by using Docker technology", 《SOUTHEASTCON 2016》, pages 1 - 5 * |
陈博俊: "基于Docker的前端发布平台的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》, pages 138 - 454 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113835683A (zh) * | 2021-09-17 | 2021-12-24 | 博锐尚格科技股份有限公司 | 一种目标程序的镜像制作方法和装置 |
CN114047938A (zh) * | 2022-01-11 | 2022-02-15 | 北京云歌科技有限责任公司 | 一种构建镜像的方法、装置、设备及可读存储介质 |
CN116301950A (zh) * | 2023-05-15 | 2023-06-23 | 北京中诺链捷数字科技有限公司 | Docker镜像生成方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113127136B (zh) | 2023-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10977010B2 (en) | Development environment for real-time dataflow programming language | |
CN108196915B (zh) | 基于应用容器引擎的代码处理方法、设备及存储介质 | |
CN113127136B (zh) | Docker镜像生成方法及装置、存储介质、电子设备 | |
US10496380B2 (en) | Cache-based system and method for executing instances of a computational algorithm | |
CN112035443B (zh) | 基于Linux平台的大数据执行方法、系统、设备及存储介质 | |
CN114461269A (zh) | 软件开发发布管理方法、装置、设备及存储介质 | |
CN113377342B (zh) | 一种项目构建方法、装置、电子设备及存储介质 | |
CN107608672B (zh) | 一种ui模块管理器、ui模块管理方法和系统 | |
CN116227625A (zh) | 智能模型开发方法、介质及设备 | |
CN114339470B (zh) | 基于卫星指令的数据测试方法、装置、电子设备及介质 | |
CN114816672A (zh) | 虚拟机的创建方法、装置、电子设备和存储介质 | |
CN115291928A (zh) | 多种技术栈的任务自动集成方法、装置及电子设备 | |
US9720660B2 (en) | Binary interface instrumentation | |
CN115552369A (zh) | 编译方法、编译装置、编译系统、存储介质与电子设备 | |
EP4155935A1 (en) | Cloud migration for legacy on-premises process code | |
US9853871B2 (en) | Dynamic collaboration service platform and method for providing an application service at the same platform | |
CN112988528B (zh) | 日志处理方法、装置及容器组 | |
US11080033B2 (en) | Method for installing a program on an embedded system, an embedded system for such a method, and a method for generating additional information | |
Humeniuk et al. | Terra Harvest software architecture | |
Shahbazi | Design and develop an environment for uploading and executing Chatbots using WebAssembly and WASI | |
CN116700728A (zh) | 动态代码生成方法、装置、电子设备和存储介质 | |
CN118057306A (zh) | 安装包的生成方法、装置、服务器、介质和程序产品 | |
CN117573631A (zh) | 一种煤矿井下移动终端数据处理方法及系统 | |
CN113467861A (zh) | 文件调用方法和装置、存储介质及电子设备 | |
CN113312152A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |