一种应用部署方法及装置
文献发布时间:2023-06-19 09:54:18
技术领域
本说明书一个或多个实施例涉及计算机技术领域,尤其涉及一种应用部署方法及装置。
背景技术
近些年,容器技术迅速发展,伴随着应用的微服务化、容器化快速建立起paas领域生态,paas(Platform-as-a-Service)平台为容器提供了运行环境、对容器的调度、编排、快速扩缩容、资源优化利用提供了条件,容器技术与云化应用的结合,为快速部署提供了便利的条件。但是,paas平台仅提供了容器运行环境,传统的应用如果要使用paas平台提供的快速部署、动态扩容、快速回滚能力,需要进行应用的容器化改造,容器化改造包括编写源代码、打包、部署、测试等整个开发交付流程,对开发人员要求较高,开发周期长,且改造过程中,往往存在源代码无法溯源,某些集成平台无法提供特定开发语言的源代码编写等种种问题。
发明内容
有鉴于此,本说明书一个或多个实施例的目的在于提出一种应用部署方法及装置,以解决应用的部署问题。
基于上述目的,本说明书一个或多个实施例提供了一种应用部署方法,包括:
获取预先配置的应用包;
获取输入的配置条件;
根据所述配置条件和所述应用包,选择匹配的任务模板,生成目标部署任务;
运行所述目标部署任务,创建应用镜像;
启动容器,运行所述应用镜像,得到能够提供特定服务的应用。
可选的,所述应用包的类型为war包、jar包、python包、php包中的一种或几种。
可选的,所述配置条件包括任务类型、任务描述、容器类型、JDK版本号、应用包类型中的一种或几种。
可选的,所述方法还包括:
输出所述能够提供特定服务的应用的访问地址。
可选的,所述方法还包括:
监听所述容器运行所在宿主机的端口状态,为所述容器分配未被占用的端口。
本说明书实施例还提供一种应用部署装置,包括:
获取模块,用于获取预先配置的应用包;以及获取输入的配置条件;
模板选择模板,用于根据所述配置条件和所述应用包,选择匹配的任务模板,生成目标部署任务;
运行模块,用于运行所述目标部署任务,创建应用镜像;
启动模块,用于启动容器,运行所述应用镜像,得到能够提供特定服务的应用。
可选的,所述应用包的类型为war包、jar包、python包、php包中的一种或几种。
可选的,所述配置条件包括任务类型、任务描述、容器类型、JDK版本号、应用包类型中的一种或几种。
可选的,所述装置还包括:
输出模块,用于输出所述能够提供特定服务的应用的访问地址。
可选的,所述装置还包括:
端口监听模块,用于监听所述容器运行所在宿主机的端口状态,为所述容器分配未被占用的端口。
从上面所述可以看出,本说明书一个或多个实施例提供的应用部署方法及装置,通过获取预先配置的应用包,获取输入的配置条件,根据配置条件和应用包,选择匹配的任务模板,生成目标部署任务,运行目标部署任务,创建应用镜像,启动容器,运行应用镜像,得到能够提供特定服务的应用。本实施例能够实现应用的自动化部署,快速方便,降低开发难度和开发周期。
附图说明
为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书一个或多个实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书一个或多个实施例的方法流程示意图;
图2为本说明书一个或多个实施例的装置结构示意图;
图3为本说明书一个或多个实施例的电子设备结构示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
需要说明的是,除非另外定义,本说明书一个或多个实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本说明书一个或多个实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
如图1所示,本说明书一个或多个实施例提供一种应用部署方法,包括:
S101:获取预先配置的应用包;
本实施例中,根据业务需要预先配置应用包。应用包的类型包括但不限于war包、jar包、python包、php包中的一种或几种。其中,war包是由若干文件压缩成的数据包,是一个可以直接运行的web模板,可应用于网站,部署于容器中可实现web应用;jar包是由若干具有特定功能的类打包成的数据包;python包是基于python编程语言开发的具有特定功能的数据包,如scapy爬虫、scipy科学计算等;php包是基于php编程语言开发的具有特定功能的数据包,例如php项目运行所依赖的库或工具等。
S102:获取输入的配置条件;
本实施例中,可输入的配置条件包括但不限于任务类型、任务描述、容器类型、JDK版本号、应用包类型等,容器类型例如是tomcat或者weblogic,JDK版本号例如是1.6、1.7、1.8等,应用包类型例如是war、jar、python、php等。
一些方式中,可于页面输入配置条件并上传应用包。例如,于容器类型配置项中选择tomcat或者weblogic,从JDK版本配置项中选择1.6或者1.7或者1.8,根据上传的应用包类型配置项中选择war或jar或python或php。以上仅为示例性说明,不用于对本申请的配置条件进行限定。
S103:根据配置条件和应用包,选择匹配的任务模板,生成目标部署任务;
本实施例中,根据不同的配置条件和应用包,预先配置好相应的至少一个任务模板。任务模板是基于jenkins模板实现的,根据上传的应用包和所选择的容器类型,选取匹配的jenkins任务模板,jenkins任务模板定义了应用构建所需要的基础镜像和所依赖的运行工具,jenkins任务模板根据配置的应用包和容器类型,生成目标部署任务。例如,一种任务模板可以根据tomat类型的容器和war包生成对应的目标部署任务,一种任务模板可以根据tomat类型的容器和jar包生成对应的目标部署任务,一种任务模板可以根据weblogic类型的容器和jar包生成对应的目标部署任务等。
S104:运行目标部署任务,创建应用镜像;
本实施例中,确定匹配的任务模板,并根据应用包和配置条件配置好任务模板后,得到目标部署任务,运行目标部署任务,创建得到应用镜像。
一些方式中,触发jenkins运行目标部署任务,基于jenkins任务模板中定义的dockerfile文件,将应用包通过docker build命令打包生成应用镜像。
S105:启动容器,运行应用镜像,得到能够提供特定服务的应用。
本实施例中,创建应用镜像之后,启动容器,运行应用镜像,将应用镜像以容器方式运行于paas平台,得到能够提供特定服务的应用,完成应用的容器化部署。
本实施例提供的应用部署方法,包括获取预先配置的应用包,获取输入的配置条件,根据配置条件和应用包,选择匹配的任务模板,生成目标部署任务,运行目标部署任务,创建应用镜像,启动容器,运行应用镜像,得到能够提供特定服务的应用。本实施例的方法,仅需导入应用包,并输入合适的配置条件,即可实现应用的容器化部署,部署方便快速。
一些实施例中,应用部署方法还包括:
输出能够提供特定服务的应用的访问地址。
本实施例中,得到能够提供特定服务的应用之后,将该应用的访问地址输出,以便于用户通过该访问地址使用该应用。一些方式中,将容器的端口绑定于宿主机,将应用的访问地址输出的特定的功能页面,用户可从功能页面访问各种部署好的应用。
一些实施例中,应用部署方法还包括:
监听容器运行所在宿主机的端口状态,为容器分配未被占用的端口。
本实施例中,可采用端口重复检测和轮询机制监听容器运行所在宿主机的端口状态,为容器分配未被占用的端口,避免端口冲突。
一些实施例中,应用部署方法还包括:
监听应用部署任务的运行状态。
本实施例中,在应用部署过程中,同步监听应用部署任务过程中的运行状态,运行状态包括但不限于开始、正在运行、结束、运行失败等。一些方式中,可通过websocket协议,长连接监听任务运行状态,根据jenkins日志实时获取任务运行状态。
本实施例的应用部署方法,仅需导入预先配置的应用包,并选择好配置条件,即可实现打包、镜像、部署等自动化容器部署过程,降低了对开发人员的技术要求,降低了应用部署的开发周期,可解决某些应用因无法通过容器化改造实现paas平台快速部署并使用pass平台的问题,能够方便、快速的实现应用的平台化部署。
需要说明的是,本说明书一个或多个实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本说明书一个或多个实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
如图2所示,本说明书一个或多个实施例提供一种应用部署装置,包括:
获取模块,用于获取预先配置的应用包;以及获取输入的配置条件;
模板选择模板,用于根据配置条件和应用包,选择匹配的任务模板,生成目标部署任务;
运行模块,用于运行目标部署任务,创建应用镜像;
启动模块,用于启动容器,运行应用镜像,得到能够提供特定服务的应用。
一些实施例中,应用包的类型为war包、jar包、python包、php包中的一种或几种。
一些实施例中,配置条件包括任务类型、任务描述、容器类型、JDK版本号、应用包类型中的一种或几种。
一些实施例中,所述装置还包括:
输出模块,用于输出所述能够提供特定服务的应用的访问地址。
一些实施例中,所述装置还包括:
端口监听模块,用于监听所述容器运行所在宿主机的端口状态,为所述容器分配未被占用的端口。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
上述实施例的装置用于实现前述实施例中相应的方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
图3示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本说明书一个或多个实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本说明书一个或多个实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本说明书一个或多个实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本说明书一个或多个实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本说明书一个或多个实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本说明书一个或多个实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。
- 一种数据库升级方法和装置以及应用部署升级方法和装置
- 一种应用部署运行方法、装置、终端设备和介质