CN110851143A - 源码部署方法、装置、设备及存储介质 - Google Patents

源码部署方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN110851143A
CN110851143A CN201810954438.1A CN201810954438A CN110851143A CN 110851143 A CN110851143 A CN 110851143A CN 201810954438 A CN201810954438 A CN 201810954438A CN 110851143 A CN110851143 A CN 110851143A
Authority
CN
China
Prior art keywords
application container
container engine
image
source code
application
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
Application number
CN201810954438.1A
Other languages
English (en)
Other versions
CN110851143B (zh
Inventor
马兴驰
朱华军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201810954438.1A priority Critical patent/CN110851143B/zh
Publication of CN110851143A publication Critical patent/CN110851143A/zh
Application granted granted Critical
Publication of CN110851143B publication Critical patent/CN110851143B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances

Abstract

本申请实施例公开了一种源码部署方法、装置、设备及存储介质。该方法包括:从多个应用容器引擎镜像中,确定第一应用容器引擎镜像,应用容器引擎镜像包括与自身应用容器引擎镜像对应的源码所需的软件环境;根据第一应用容器引擎镜像,在目标宿主机中创建第一应用容器引擎容器,第一应用容器引擎容器包括与第一应用容器引擎镜像对应的源码所需的软件环境;在第一应用容器引擎容器中,部署与第一应用容器引擎镜像对应的源码。本申请实施例的源码部署方法、装置、设备及存储介质,无需进行运维工作,仅需指定软件环境或提供该软件环境对应的应用容器引擎镜像即可,能够提高软件开发效率。

Description

源码部署方法、装置、设备及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种源码部署方法、装置、设备及存储介质。
背景技术
目前,部署目标软件的源码的主要过程为:获得目标软件的源码以及软件环境,从宿主机集群中筛选出满足目标软件的软件环境条件的多个宿主机,然后利用调度算法从筛选出的多个宿主机中选择出一个宿主机,在所选择出的宿主机上部署目标软件的源码。
其中,软件环境在计算机领域,指运行于计算机硬件之上的驱动计算机及其外围设备实现某种目的的软件系统。还主要指软件的运行环境以及软件运行所需的周边软件等等。除此之外,还包括目标软件之外的应用层软件。
由上述的源码部署过程可见,所选择出的宿主机必然满足目标软件的软件环境条件,否则将不能部署源码。但是随着软件的发展,不同软件所需的软件环境也各不相同,这就需要对各个宿主机的软件环境进行运维。宿主机的运维工作繁琐且重复,软件开发者很难从繁琐复杂的运维工作中抽身出来,将工作重点回归到软件开发本身,影响软件开发效率。
发明内容
本申请实施例提供一种源码部署方法、装置、设备及存储介质,能够提高软件开发效率。
一方面,本申请实施例提供了一种源码部署方法,方法包括:
从多个应用容器引擎镜像中,确定第一应用容器引擎镜像,应用容器引擎镜像包括与自身应用容器引擎镜像对应的源码所需的软件环境;
根据第一应用容器引擎镜像,在目标宿主机中创建第一应用容器引擎容器,第一应用容器引擎容器包括与第一应用容器引擎镜像对应的源码所需的软件环境;
在第一应用容器引擎容器中,部署与第一应用容器引擎镜像对应的源码。
在本申请的一个实施例中,从多个应用容器引擎镜像中,确定第一应用容器引擎镜像,包括:
从多个应用容器引擎镜像中随机选取一个应用容器引擎镜像作为第一应用容器引擎镜像。
在本申请的一个实施例中,从多个应用容器引擎镜像中,确定第一应用容器引擎镜像,包括:
将用户从多个应用容器引擎镜像中所选择的应用容器引擎镜像作为第一应用容器引擎镜像。
在本申请的一个实施例中,根据第一应用容器引擎镜像,在目标宿主机中创建第一应用容器引擎容器,包括:
查找是否存在第一应用容器引擎镜像的注册信息;
若查找到存在第一应用容器引擎镜像的注册信息,则根据第一应用容器引擎镜像,在目标宿主机中创建第一应用容器引擎容器。
在本申请的一个实施例中,本申请实施例提供的源码部署方法还包括:
获取第一应用容器引擎镜像对应的源码所需的更新后的软件环境;
根据更新后的软件环境,构建第二应用容器引擎镜像;
建立第二应用容器引擎镜像与第一应用容器引擎镜像对应的源码的对应关系;
根据第二应用容器引擎镜像,在目标宿主机中创建第二应用容器引擎容器;
在第二应用容器引擎容器中,部署与第一应用容器引擎镜像对应的源码。
在本申请的一个实施例中,目标宿主机为利用调度算法从宿主机集群中筛选出的宿主机。
在本申请的一个实施例中,调度算法包括:基于负载均衡的调度算法或基于资源利用率的调度算法。
另一方面,本申请实施例提供了一种源码部署装置,装置包括:
确定模块,用于从多个应用容器引擎镜像中,确定第一应用容器引擎镜像,应用容器引擎镜像包括与自身应用容器引擎镜像对应的源码所需的软件环境;
第一创建模块,用于根据第一应用容器引擎镜像,在目标宿主机中创建第一应用容器引擎容器,第一应用容器引擎容器包括与第一应用容器引擎镜像对应的源码所需的软件环境;
第一部署模块,用于在第一应用容器引擎容器中,部署与第一应用容器引擎镜像对应的源码。
在本申请的一个实施例中,确定模块具体用于:
从多个应用容器引擎镜像中随机选取一个应用容器引擎镜像作为第一应用容器引擎镜像。
在本申请的一个实施例中,确定模块具体用于:
将用户从多个应用容器引擎镜像中所选择的应用容器引擎镜像作为第一应用容器引擎镜像。
在本申请的一个实施例中,第一创建模块具体用于:
查找是否存在第一应用容器引擎镜像的注册信息;
若查找到存在第一应用容器引擎镜像的注册信息,则根据第一应用容器引擎镜像,在目标宿主机中创建第一应用容器引擎容器。
在本申请的一个实施例中,本申请实施例提供的源码部署装置还包括:
获取模块,获取第一应用容器引擎镜像对应的源码所需的更新后的软件环境;
构建模块,用于根据更新后的软件环境,构建第二应用容器引擎镜像;
建立模块,用于建立第二应用容器引擎镜像与第一应用容器引擎镜像对应的源码的对应关系;
第二创建模块,用于根据第二应用容器引擎镜像,在目标宿主机中创建第二应用容器引擎容器;
第二部署模块,用于在第二应用容器引擎容器中,部署与第一应用容器引擎镜像对应的源码。
在本申请的一个实施例中,目标宿主机为利用调度算法从宿主机集群中筛选出的宿主机。
在本申请的一个实施例中,调度算法包括:基于负载均衡的调度算法或基于资源利用率的调度算法。
再一方面,本申请实施例提供一种源码部署设备,设备包括:存储器和处理器;
存储器用于存储可执行程序代码;
处理器用于读取存储器中存储的可执行程序代码以执行本申请实施例提供的源码部署方法。
再一方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序指令;计算机程序指令被处理器执行时实现本申请实施例提供的源码部署方法。
本申请实施例的源码部署方法、装置、设备及存储介质,软件开发者无需进行运维工作,仅需指定软件环境或提供该软件环境对应的应用容器引擎镜像即可,能够提高软件开发效率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请实施例提供的源码部署方法的流程示意图;
图2示出了本申请实施例提供的源码部署过程示意图;
图3示出了本申请实施例提供的源码部署装置的结构示意图;
图4示出了能够实现根据本申请实施例的源码部署方法及装置的计算设备的示例性硬件架构的结构图。
具体实施方式
下面将详细描述本申请的各个方面的特征和示例性实施例,为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本申请,并不被配置为限定本申请。对于本领域技术人员来说,本申请可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本申请的示例来提供对本申请更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
目前在部署目标软件的源码时需要获得目标软件的源码以及软件环境,从宿主机集群中筛选出满足目标软件的软件环境条件的多个宿主机,然后利用调度算法从筛选出的多个宿主机中选择出一个宿主机,在所选择出的宿主机上部署目标软件的源码。随着软件的发展,不同软件所需的软件环境也各不相同,这就需要对各个宿主机的软件环境进行运维。宿主机的运维工作繁琐且重复,软件开发者很难从繁琐复杂的运维工作中抽身出来,将工作重点回归到软件开发本身,影响软件开发效率。基于此,本申请实施例提供一种源码部署方法、装置、设备及存储介质,来提高软件开发效率。下面首先对本申请实施例提供的源码部署方法进行介绍。
图1示出了本申请实施例提供的源码部署方法的流程示意图。源码部署方法可以包括:
S101:从多个应用容器引擎镜像中,确定第一应用容器引擎镜像。
其中,应用容器引擎镜像包括与自身应用容器引擎镜像对应的源码所需的软件环境。
S102:根据第一应用容器引擎镜像,在目标宿主机中创建第一应用容器引擎容器。
可以理解的是,第一应用容器引擎容器包括与第一应用容器引擎镜像对应的源码所需的软件环境。
S103:在第一应用容器引擎容器中,部署与第一应用容器引擎镜像对应的源码。
需要说明是的,本申请实施例的源码部署方法可以适用于云端构建平台,当然也适用于服务器。
应用容器引擎(Docker)包括:Docker客户端(Client)、Docker守护进程(Daemon)、Docker镜像(Image)和Docker容器(Container)。
示例性的,下面以部署软件A的源码为例进行说明。
假设软件A具有3个版本,分别为版本x、版本y和版本z。
版本x对应的源码所需的软件环境为:操作系统linux、图像驱动程序、图像显示软件、jdk-8u161-linux-x64。
版本y对应的源码所需的软件环境为:操作系统linux、图像驱动程序、图像显示软件、声音驱动程序、jdk-9.0.4-linux-x64。
版本z对应的源码所需的软件环境为:操作系统linux、图像驱动程序、图像显示软件、声音驱动程序、视频驱动程序、jdk-10-linux-x64。
软件开发者将软件A的版本x、版本y和版本z对应的源码以及版本x、版本y和版本z对应的源码所需的软件环境分别对应的Docker Image提供给云端构建平台。
云端构建平台在获得软件A的版本x、版本y和版本z对应的源码以及版本x、版本y和版本z对应的源码所需的软件环境分别对应的Docker Image后,从获得的三个DockerImage中,确定第一Docker Image。假设确定出的第一Docker Image为版本x对应的源码所需的软件环境对应的Docker Image。则根据版本x对应的源码所需的软件环境对应的Docker Image,在目标宿主机中创建Docker Container,此时所创建的Docker Container包括版本x对应的源码所需的软件环境:“操作系统linux、图像驱动程序、图像显示软件、jdk-8u161-linux-x64”。然后在所创建的Docker Container中部署版本x对应的源码。
在本申请的一个实施例中,根据Docker Image创建Docker Container可采用docker run命令,docker run命令用于根据Docker Image创建Docker Container。以根据版本x对应的源码所需的软件环境对应的Docker Image创建Docker Container为例,创建Docker Container的命令如下:
docker run--name mydocker版本x对应的源码所需的软件环境对应的DockerImage。
其中,--name mydocker表示指定所创建的Docker Container的名称为mydocker。
在本申请的一个实施例中,软件开发者可以将软件A的版本x、版本y和版本z对应的源码以及版本x、版本y和版本z对应的源码所需的软件环境提供给云端构建平台。
云端构建平台在获得版本x、版本y和版本z对应的源码所需的软件环境后,根据获得的版本x、版本y和版本z对应的源码所需的软件环境,构建与版本x、版本y和版本z对应的源码一一对应的Docker Image。
具体的,云端构建平台在获得版本x、版本y和版本z对应的源码所需的软件环境后,生成DockerFile,其中,DockerFile包括:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。在生成DockerFile后,通过Docker Build命令创建版本x、版本y和版本z对应的源码所需的软件环境分别对应的Docker Image。Docker Build命令用于创建镜像。
示例性的,假设生成的版本x对应的源码所需的软件环境的DockerFile路径为/tmp/docker_build/。
创建版本x对应的源码所需的软件环境对应的Docker Image的Docker Build命令如下:
docker build-t my_images/tmp/docker_build/。
其中,-t my_images表示指定了所创建的名称/标签tag为my_images。
Docker Build命令读取指定路径下(包括子目录)所有的Dockefile,并且把目录下所有内容发送到服务端,由服务端创建镜像。在本申请实施例中的服务端可以理解为云端构建平台。
基于上述过程,本申请实施例提供的源码部署过程如图2所示。图2示出了本申请实施例提供的源码部署过程示意图。
首先,软件开发者向云端构建平台提供源码、源码对应的软件环境或源码对应的软件环境对应的Docker Image。
云端构建平台从宿主机集群中选择一台宿主机。
若云端构建平台获得软件开发者提供的源码对应的软件环境,则利用软件开发者提供的源码对应的软件环境,构建软件开发者提供的源码对应的软件环境对应的DockerImage。进而在所选择的宿主机中,利用所构建的Docker Image创建Docker Container,在所创建的Docker Container部署软件开发者提供的源码。
若云端构建平台获得软件开发者提供的源码对应的软件环境对应的DockerImage,则直接在所选择的宿主机中,利用软件开发者提供的Docker Image创建DockerContainer,在所创建的Docker Container部署软件开发者提供的源码。
在本申请的一个实施例中,云端构建平台在从多个Docker Image中,确定第一Docker Image时,可以从多个Docker Image中随机选取一个Docker Image作为第一DockerImage。
示例性的,云端构建平台从版本x、版本y和版本z对应的源码所需的软件环境分别对应的Docker Image中,随机选取出版本x对应的源码所需的软件环境对应的DockerImage,则将版本x对应的源码所需的软件环境对应的Docker Image作为第一DockerImage。
在本申请的一个实施例中,云端构建平台在从多个Docker Image中,确定第一Docker Image时,还可以将用户从多个Docker Image中所选择的Docker Image作为第一Docker Image。
示例性的,假设软件开发者从版本x、版本y和版本z对应的源码所需的软件环境分别对应的Docker Image中,选择版本y对应的源码所需的软件环境对应的Docker Image,则将版本y对应的源码所需的软件环境对应的Docker Image作为第一Docker Image。根据本申请实施例,用户可以指定Docker Image进行Docker Container的创建。
在本申请的一个实施例中,在根据第一Docker Image,在目标宿主机中创建第一Docker Container时,可以先查找是否存在第一Docker Image的注册信息;若查找到存在第一Docker Image的注册信息,则根据第一Docker Image,在目标宿主机中创建第一Docker Container。
示例性的,以第一Docker Image为版本y对应的源码所需的软件环境对应的Docker Image为例,则云端构建平台查找是否存在版本y对应的源码所需的软件环境对应的Docker Image的注册信息,若查找到版本y对应的源码所需的软件环境对应的DockerImage的注册信息,则表示版本y对应的源码所需的软件环境对应的Docker Image在云端构建平台中已注册,此时则根据版本y对应的源码所需的软件环境对应的Docker Image创建Docker Container。
在本申请的一个实施例中,目标宿主机可以为利用调度算法从宿主机集群中筛选出的宿主机。
在本申请的一个实施例中,在利用调度算法从宿主机集群中筛选出目标宿主机时,可采用的调度算法包括:基于负载均衡的调度算法或基于资源利用率的调度算法。
在采用基于负载均衡的调度算法从宿主机集群中筛选出目标宿主机时,可以采用轮询算法。
示例性的,假设宿主机集群中包括5台宿主机,分别为宿主机A、宿主机B、……、宿主机E。轮询顺序依次为宿主机E、宿主机D、……、宿主机A、宿主机E、宿主机D、……。当前时刻之前,最后一次创建Docker Container在宿主机A中进行,即当前时刻之前轮询到的最后一个宿主机为:宿主机A。当再次从宿主机集群中筛选出目标宿主机时,根据上述轮询顺序,将被轮询的宿主机为宿主机A的下一个宿主机:宿主机E,则将宿主机E确定为目标宿主机。
在采用基于资源利用率的调度算法从宿主机集群中筛选出目标宿主机时,可以采用资源利用最大化算法或者资源利用最小化算法。其中,本申请实施例中的资源包括但不限于CPU资源、GPU资源、内存资源、硬盘资源和带宽资源。
可以理解的是,资源利用最大化算法是指剩余资源越少的宿主机优先利用。资源利用最小化算法是指剩余资源越多的宿主机优先利用。
示例性的,假设宿主机集群中包括5台宿主机,分别为宿主机A、宿主机B、……、宿主机E。其中,5台宿主机的硬盘总资源相等,但宿主机A硬盘资源剩余7GB、宿主机B硬盘资源剩余5GB、宿主机C硬盘资源剩余12GB、宿主机D硬盘资源剩余50GB、宿主机E硬盘资源剩余25GB。当基于资源利用最大化算法筛选目标宿主机时,筛选出宿主机B。
示例性的,假设宿主机集群中包括5台宿主机,分别为宿主机A、宿主机B、……、宿主机E。其中,5台宿主机的内存总资源相等,但宿主机A内存利用率为18%、宿主机B内存利用率为25%、宿主机C内存利用率为7%、宿主机D内存利用率为59%、宿主机E内存利用率为30%。当基于资源利用最小化算法筛选目标宿主机时,筛选出宿主机C。
在本申请的一个实施例中,在利用调度算法从宿主机集群中筛选出目标宿主机时,还可以综合考虑CPU资源、GPU资源、内存资源、硬盘资源和带宽资源等各种资源。
在本申请的一个实施例中,还可以对源码所需的软件环境进行更新升级。
示例性的,假设更新升级后的版本y对应的源码所需的软件环境为:操作系统linux、图像驱动程序、图像显示软件、声音驱动程序、jdk-10-linux-x64。相较于原版本y对应的源码所需的软件环境,jdk版本由jdk-9.0.4-linux-x64更新为jdk-10-linux-x64。
此时,软件开发者将更新升级后的版本y对应的源码所需的软件环境“操作系统linux、图像驱动程序、图像显示软件、声音驱动程序、jdk-10-linux-x64”提供给云端构建平台。云端构建平台在获得更新升级后的版本y对应的源码所需的软件环境后,生成DockerFile。在生成DockerFile后,通过Docker Build命令创建更新升级后的版本y对应的源码所需的软件环境对应的Docker Image(以下简称为第二Docker Image)。然后再根据第二Docker Image,通过docker run命令创建Docker Container,此时所创建的DockerContainer包括更新升级后的版本y对应的源码所需的软件环境:“操作系统linux、图像驱动程序、图像显示软件、声音驱动程序、jdk-10-linux-x64”。然后在新创建的DockerContainer中重新部署版本y对应的源码。
而现有技术在更新软件环境时,需要将宿主机上的jdk版本由jdk-9.0.4-linux-x64更新为jdk-10-linux-x64。但是将宿主机上某一软件升级或卸载,有可能会影响该宿主机上其他软件的运行。相较于现有技术,本申请实施例则不会影响其他软件的运行。
在本申请的一个实施例中,软件开发者在向云端构建平台提供软件环境后,云端构建平台可以基于软件开发者提供的软件环境,在宿主机集群的宿主机中查找是否存在包括软件开发者提供的软件环境的Docker Container,若查找到宿主机集群的宿主机中存在包括软件开发者提供的软件环境的Docker Container,则直接在查找到的DockerContainer中部署源码,此时无需重新创建Docker Container。若在宿主机集群的宿主机中未查找到包括软件开发者提供的软件环境的Docker Container,则创建DockerContainer,进而在新创建的Docker Container中部署源码。
基于此,在本申请的一个实施例中,云端构建平台可以获得新增的软件环境或新增的软件环境对应的Docker Image,基于新增的软件环境或新增的软件环境对应的DockerImage,在宿主机集群中的所有宿主机中构建包括新增的软件环境的Docker Container。基于新增的软件环境或新增的软件环境对应的Docker Image,在宿主机集群中的所有宿主机中构建包括新增的软件环境的Docker Container与上述构建Docker Container过程基本相同,本申请实施例在此不对进行赘述,具体可参考上述构建Docker Container的过程。
由上述的过程可见,Docker Container的创建,即目标软件的源码所需的软件环境的构建与宿主机的软件环境无关,软件开发者无需对宿主机的软件环境进行运维工作,仅需指定软件环境或提供该软件环境对应的Docker Image即可,软件开发者能够从繁琐复杂的运维工作中抽身出来,将工作重点回归到软件开发本身,进而能够提高软件开发效率。另外,在本申请实施例中,一个宿主机中可以创建多个Docker Container,即构建多个软件环境。而现有技术中的一个宿主机仅有一个软件环境,并且需要进行维护。
与上述的方法实施例相对应,本申请实施例还提供一种源码部署装置。
图3示出了本申请实施例提供的源码部署装置的结构示意图。源码部署装置可以包括:
确定模块301,用于从多个Docker Image中,确定第一Docker Image。
Docker Image包括与自身Docker Image对应的源码所需的软件环境。
第一创建模块302,用于根据第一Docker Image,在目标宿主机中创建第一DockerContainer。
可以理解的是,第一Docker Container包括与第一Docker Image对应的源码所需的软件环境。
第一部署模块303,用于在第一Docker Container中,部署与第一Docker Image对应的源码。
在本申请的一个实施例中,确定模块301具体可以用于:
从多个Docker Image中随机选取一个Docker Image作为第一Docker Image。
在本申请的一个实施例中,确定模块301具体可以用于:
将用户从多个Docker Image中所选择的Docker Image作为第一Docker Image。
在本申请的一个实施例中,第一创建模块302具体可以用于:
查找是否存在第一Docker Image的注册信息;
若查找到存在第一Docker Image的注册信息,则根据第一Docker Image,在目标宿主机中创建第一Docker Container。
在本申请的一个实施例中,本申请实施例提供的源码部署装置还可以包括:
获取模块(图中未示出),获取第一Docker Image对应的源码所需的更新后的软件环境。
构建模块(图中未示出),用于根据更新后的软件环境,构建第二Docker Image。
建立模块(图中未示出),用于建立第二Docker Image与第一Docker Image对应的源码的对应关系。
第二创建模块(图中未示出),用于根据第二Docker Image,在目标宿主机中创建第二Docker Container。
第二部署模块(图中未示出),用于在第二Docker Container中,部署与第一Docker Image对应的源码。
在本申请的一个实施例中,目标宿主机可以为利用调度算法从宿主机集群中筛选出的宿主机。
在本申请的一个实施例中,调度算法包括:基于负载均衡的调度算法或基于资源利用率的调度算法。
本申请实施例的源码部署装置,软件开发者无需进行运维工作,仅需指定软件环境或提供该软件环境对应的Docker Image即可,能够提高软件开发效率。
图4示出了能够实现根据本申请实施例的源码部署方法及装置的计算设备的示例性硬件架构的结构图。如图4所示,计算设备400包括输入设备401、输入接口402、中央处理器403、存储器404、输出接口405、以及输出设备406。其中,输入接口402、中央处理器403、存储器404、以及输出接口405通过总线410相互连接,输入设备401和输出设备406分别通过输入接口402和输出接口405与总线410连接,进而与计算设备400的其他组件连接。
具体地,输入设备401接收来自外部的输入信息,并通过输入接口402将输入信息传送到中央处理器403;中央处理器403基于存储器404中存储的计算机可执行指令对输入信息进行处理以生成输出信息,将输出信息临时或者永久地存储在存储器404中,然后通过输出接口405将输出信息传送到输出设备406;输出设备406将输出信息输出到计算设备400的外部供用户使用。
也就是说,图4所示的计算设备也可以被实现为源码部署设备,该源码部署设备可以包括:存储有计算机可执行指令的存储器;以及处理器,该处理器在执行计算机可执行指令时可以实现结合图1至图3描述的源码部署方法及装置。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现本申请实施例提供的源码部署方法。
需要明确的是,本申请并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本申请的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本申请的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本申请的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
还需要说明的是,本申请中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本申请不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
以上所述,仅为本申请的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。

Claims (16)

1.一种源码部署方法,其特征在于,所述方法包括:
从多个应用容器引擎镜像中,确定第一应用容器引擎镜像,所述应用容器引擎镜像包括与自身应用容器引擎镜像对应的源码所需的软件环境;
根据所述第一应用容器引擎镜像,在目标宿主机中创建第一应用容器引擎容器,所述第一应用容器引擎容器包括与所述第一应用容器引擎镜像对应的源码所需的软件环境;
在所述第一应用容器引擎容器中,部署与所述第一应用容器引擎镜像对应的源码。
2.根据权利要求1所述的方法,其特征在于,所述从多个应用容器引擎镜像中,确定第一应用容器引擎镜像,包括:
从所述多个应用容器引擎镜像中随机选取一个应用容器引擎镜像作为第一应用容器引擎镜像。
3.根据权利要求1所述的方法,其特征在于,所述从多个应用容器引擎镜像中,确定第一应用容器引擎镜像,包括:
将用户从所述多个应用容器引擎镜像中所选择的应用容器引擎镜像作为第一应用容器引擎镜像。
4.根据权利要求1所述的方法,其特征在于,所述根据所述第一应用容器引擎镜像,在目标宿主机中创建第一应用容器引擎容器,包括:
查找是否存在所述第一应用容器引擎镜像的注册信息;
若查找到存在所述第一应用容器引擎镜像的注册信息,则根据所述第一应用容器引擎镜像,在目标宿主机中创建第一应用容器引擎容器。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述第一应用容器引擎镜像对应的源码所需的更新后的软件环境;
根据所述更新后的软件环境,构建第二应用容器引擎镜像;
建立所述第二应用容器引擎镜像与所述第一应用容器引擎镜像对应的源码的对应关系;
根据所述第二应用容器引擎镜像,在目标宿主机中创建第二应用容器引擎容器;
在所述第二应用容器引擎容器中,部署与所述第一应用容器引擎镜像对应的源码。
6.根据权利要求1所述的方法,其特征在于,所述目标宿主机为利用调度算法从宿主机集群中筛选出的宿主机。
7.根据权利要求6所述的方法,其特征在于,所述调度算法包括:基于负载均衡的调度算法或基于资源利用率的调度算法。
8.一种源码部署装置,其特征在于,所述装置包括:
确定模块,用于从多个应用容器引擎镜像中,确定第一应用容器引擎镜像,所述应用容器引擎镜像包括与自身应用容器引擎镜像对应的源码所需的软件环境;
第一创建模块,用于根据所述第一应用容器引擎镜像,在目标宿主机中创建第一应用容器引擎容器,所述第一应用容器引擎容器包括与所述第一应用容器引擎镜像对应的源码所需的软件环境;
第一部署模块,用于在所述第一应用容器引擎容器中,部署与所述第一应用容器引擎镜像对应的源码。
9.根据权利要求8所述的装置,其特征在于,所述确定模块具体用于:
从所述多个应用容器引擎镜像中随机选取一个应用容器引擎镜像作为第一应用容器引擎镜像。
10.根据权利要求8所述的装置,其特征在于,所述确定模块具体用于:
将用户从所述多个应用容器引擎镜像中所选择的应用容器引擎镜像作为第一应用容器引擎镜像。
11.根据权利要求8所述的装置,其特征在于,所述第一创建模块具体用于:
查找是否存在所述第一应用容器引擎镜像的注册信息;
若查找到存在所述第一应用容器引擎镜像的注册信息,则根据所述第一应用容器引擎镜像,在目标宿主机中创建第一应用容器引擎容器。
12.根据权利要求8所述的装置,其特征在于,所述装置还包括:
获取模块,获取所述第一应用容器引擎镜像对应的源码所需的更新后的软件环境;
构建模块,用于根据所述更新后的软件环境,构建第二应用容器引擎镜像;
建立模块,用于建立所述第二应用容器引擎镜像与所述第一应用容器引擎镜像对应的源码的对应关系;
第二创建模块,用于根据所述第二应用容器引擎镜像,在目标宿主机中创建第二应用容器引擎容器;
第二部署模块,用于在所述第二应用容器引擎容器中,部署与所述第一应用容器引擎镜像对应的源码。
13.根据权利要求8所述的装置,其特征在于,所述目标宿主机为利用调度算法从宿主机集群中筛选出的宿主机。
14.根据权利要求13所述的装置,其特征在于,所述调度算法包括:基于负载均衡的调度算法或基于资源利用率的调度算法。
15.一种源码部署设备,其特征在于,所述设备包括:存储器和处理器;
所述存储器用于存储可执行程序代码;
所述处理器用于读取所述存储器中存储的可执行程序代码以执行权利要求1-7任意一项所述的源码部署方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序指令;所述计算机程序指令被处理器执行时实现如权利要求1-7任意一项所述的源码部署方法。
CN201810954438.1A 2018-08-21 2018-08-21 源码部署方法、装置、设备及存储介质 Active CN110851143B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810954438.1A CN110851143B (zh) 2018-08-21 2018-08-21 源码部署方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810954438.1A CN110851143B (zh) 2018-08-21 2018-08-21 源码部署方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN110851143A true CN110851143A (zh) 2020-02-28
CN110851143B CN110851143B (zh) 2024-04-05

Family

ID=69594639

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810954438.1A Active CN110851143B (zh) 2018-08-21 2018-08-21 源码部署方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN110851143B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112363803A (zh) * 2020-11-13 2021-02-12 浪潮电子信息产业股份有限公司 一种镜像构建方法、系统、设备及介质
CN112596855A (zh) * 2020-12-23 2021-04-02 新华三大数据技术有限公司 一种容器创建方法及装置
CN112905337A (zh) * 2021-02-07 2021-06-04 中国工商银行股份有限公司 软硬件混合部署的MySQL集群调度方法及装置
CN117055880A (zh) * 2023-08-22 2023-11-14 广东保伦电子股份有限公司 一种基于容器化部署的文档转码方法、装置及存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160154629A1 (en) * 2014-11-28 2016-06-02 Ludo Franciscus Maria NOENS Application builder based on metadata
CN105824614A (zh) * 2015-12-15 2016-08-03 广东亿迅科技有限公司 基于Docker的分布式开发环境的搭建方法及装置
CN106528170A (zh) * 2016-11-25 2017-03-22 上海找钢网信息科技股份有限公司 一种基于多语言环境的软件包发布方法及系统
WO2017161338A1 (en) * 2016-03-18 2017-09-21 TUPL, Inc. Continuous and automatic distributed application development and deployment
CN107248986A (zh) * 2017-06-08 2017-10-13 医惠科技有限公司 一种服务托管方法
CN107463432A (zh) * 2017-08-17 2017-12-12 福建中金在线信息科技有限公司 服务器生产环境部署方法、装置、电子设备及存储介质
CN107766047A (zh) * 2017-09-19 2018-03-06 南京信息工程大学 一种气象模式云部署装置
US20180089593A1 (en) * 2016-09-26 2018-03-29 Acusense Technologies, Inc. Method and system for an end-to-end artificial intelligence workflow
CN108427641A (zh) * 2018-01-29 2018-08-21 中国互联网络信息中心 一种基于Docker容器的多任务调度自动化测试方法及系统

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160154629A1 (en) * 2014-11-28 2016-06-02 Ludo Franciscus Maria NOENS Application builder based on metadata
CN105824614A (zh) * 2015-12-15 2016-08-03 广东亿迅科技有限公司 基于Docker的分布式开发环境的搭建方法及装置
WO2017161338A1 (en) * 2016-03-18 2017-09-21 TUPL, Inc. Continuous and automatic distributed application development and deployment
US20180089593A1 (en) * 2016-09-26 2018-03-29 Acusense Technologies, Inc. Method and system for an end-to-end artificial intelligence workflow
CN106528170A (zh) * 2016-11-25 2017-03-22 上海找钢网信息科技股份有限公司 一种基于多语言环境的软件包发布方法及系统
CN107248986A (zh) * 2017-06-08 2017-10-13 医惠科技有限公司 一种服务托管方法
CN107463432A (zh) * 2017-08-17 2017-12-12 福建中金在线信息科技有限公司 服务器生产环境部署方法、装置、电子设备及存储介质
CN107766047A (zh) * 2017-09-19 2018-03-06 南京信息工程大学 一种气象模式云部署装置
CN108427641A (zh) * 2018-01-29 2018-08-21 中国互联网络信息中心 一种基于Docker容器的多任务调度自动化测试方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
于红雨;李燕;: "Windows平台的软件自动构建与发布技术研究", 成组技术与生产现代化, no. 02, 28 June 2018 (2018-06-28) *
张庆;管锦亮;: "基于HTML5的可视化编程教学平台的设计", 沈阳师范大学学报(自然科学版), no. 02, 8 April 2018 (2018-04-08) *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112363803A (zh) * 2020-11-13 2021-02-12 浪潮电子信息产业股份有限公司 一种镜像构建方法、系统、设备及介质
CN112363803B (zh) * 2020-11-13 2022-06-07 浪潮电子信息产业股份有限公司 一种镜像构建方法、系统、设备及介质
CN112596855A (zh) * 2020-12-23 2021-04-02 新华三大数据技术有限公司 一种容器创建方法及装置
CN112596855B (zh) * 2020-12-23 2022-03-29 新华三大数据技术有限公司 一种容器创建方法及装置
CN112905337A (zh) * 2021-02-07 2021-06-04 中国工商银行股份有限公司 软硬件混合部署的MySQL集群调度方法及装置
CN112905337B (zh) * 2021-02-07 2024-03-26 中国工商银行股份有限公司 软硬件混合部署的MySQL集群调度方法及装置
CN117055880A (zh) * 2023-08-22 2023-11-14 广东保伦电子股份有限公司 一种基于容器化部署的文档转码方法、装置及存储介质
CN117055880B (zh) * 2023-08-22 2024-05-03 广东保伦电子股份有限公司 一种基于容器化部署的文档转码方法、装置及存储介质

Also Published As

Publication number Publication date
CN110851143B (zh) 2024-04-05

Similar Documents

Publication Publication Date Title
CN110851143B (zh) 源码部署方法、装置、设备及存储介质
US20190097942A1 (en) Orchestrating computing resources between different computing environments
US10333981B2 (en) Method and apparatus for security checking of image for container
EP3333704B1 (en) Method and apparatus for repairing kernel vulnerability
EP3317762B1 (en) Methods and apparatus for software lifecycle management of a virtual computing environment
US9465625B2 (en) Provisioning of operating environments on a server in a networked environment
US9639558B2 (en) Image building
EP3488337B1 (en) Shared software libraries for computing devices
CN113557747B (zh) 基于网络的媒体处理中处理媒体内容的方法和装置
CN110391938B (zh) 用于部署服务的方法和装置
CN101393524A (zh) 固件更新方法及系统
US20090288082A1 (en) System and method for performing designated service image processing functions in a service image warehouse
US9086942B2 (en) Software discovery by an installer controller
WO2014035309A1 (en) Re-configuration in cloud computing environments
US9367299B2 (en) Preventing application downgrade in an application store
CN102231671A (zh) 用于对待升级对象进行升级的方法、装置、设备和系统
CN105138352B (zh) 一种用于安装应用插件的方法和装置
CN112328301A (zh) 维护运行环境一致性的方法、装置、存储介质及电子设备
KR101860995B1 (ko) 사물 기능과 클라우드 서비스를 활용한 자율 서비스 구성 방법
US20190073198A1 (en) Multi-flavored software execution from a singular code base
CN108733398B (zh) 一种软件升级的处理方法及装置
CN114631077B (zh) 用于使用配置对象来检测计算环境中软件应用的使用的自动化技术
US20180018191A1 (en) Virtual Machine Seed Image Replication through Parallel Deployment
WO2016078326A1 (zh) 一种虚拟机名称展示的方法、装置及系统
JP2009217395A (ja) 仮想サーバソフトウェア更新システム、仮想サーバソフトウェア更新方法、サーバ、及びサーバ用プログラム

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