JavaWeb应用部署方法、装置、设备及存储介质与流程

文档序号:24305420发布日期:2021-03-17 00:58阅读:187来源:国知局
JavaWeb应用部署方法、装置、设备及存储介质与流程

本申请涉及计算机应用技术领域,特别是涉及一种javaweb应用部署方法、装置、设备及存储介质。



背景技术:

javaweb应用的部署一般是将应用软件包如war包放入web应用服务器中,然后启动web应用服务器。假如使用tomcat作为web应用服务器,那么就是将war包放入tomcat的webapps目录下,然后启动tomcat,这样javaweb应用就可以对外提供服务了。

如果要使用docker容器方式部署javaweb应用,首先需要考虑如何制作镜像,一种方法是:以tomcat镜像作为基础镜像,将war包拷贝进tomcat镜像的webapps目录下,然后使用dockerbuild命令制作出一个新的镜像,这个镜像中包含了tomcat软件的所有文件和war包,只要使用这个镜像启动一个docker容器,这个容器就能够对外提供javaweb服务。

这种方法是一种比较直接、简单和容易理解的方法。但是这种方法却存在如下问题:在需要升级tomcat版本时,例如从tomcat7升级到tomcat8,必须按照以上方法重新制作一遍镜像。但是对于一个项目组、软件研发部门、软件公司来说,会有很多个javaweb应用,这样就需要按照上述方法重新制作很多遍镜像,使得部署效率较低。



技术实现要素:

本申请的目的是提供一种javaweb应用部署方法、装置、设备及存储介质,以提高部署效率。

为解决上述技术问题,本申请提供如下技术方案:

一种javaweb应用部署方法,包括:

获得待部署的javaweb应用的应用软件包;

构建所述应用软件包的应用软件包镜像;

利用所述应用软件包镜像,启动应用软件包容器,所述应用软件包容器中包含目标目录,所述目标目录中仅包含所述应用软件包;

利用纯净的应用服务器镜像,启动应用服务器容器,所述应用服务器容器中包含所述目标目录;

将所述应用软件包容器的所述目标目录动态挂载到所述应用服务器容器的所述目标目录上。

在本申请的一种具体实施方式中,所述构建所述应用软件包的应用软件包镜像,包括:

获得操作系统基础镜像;

将所述应用软件包拷贝至所述操作系统基础镜像的设定目录下;

创建所述目标目录;

在配置文件中添加迁移命令,所述迁移命令定义为:在利用镜像启动容器时,自动将所述操作系统基础镜像中的所述设定目录下的应用软件包迁移至所述目标目录;

基于所述配置文件,调用镜像构建命令构建所述应用软件包的应用软件包镜像。

在本申请的一种具体实施方式中,所述利用所述应用软件包镜像,启动应用软件包容器,包括:

利用所述应用软件包镜像,调用容器启动命令启动应用软件包容器。

在本申请的一种具体实施方式中,还包括:

在调用容器启动命令启动应用软件包容器时,将所述目标目录定义为容器的数据卷。

在本申请的一种具体实施方式中,所述将所述应用软件包容器的所述目标目录动态挂载到所述应用服务器容器的所述目标目录上,包括:

利用--volumes-from参数,将所述应用软件包容器的所述目标目录动态挂载到所述应用服务器容器的所述目标目录上。

在本申请的一种具体实施方式中,还包括:

如果所述应用服务器镜像有更新,则利用更新后的所述应用服务器镜像,启动所述应用服务器容器;

重复执行所述将所述应用软件包容器的所述目标目录动态挂载到所述应用服务器容器的所述目标目录上的步骤。

在本申请的一种具体实施方式中,还包括:

如果所述应用软件包有更新,则重新构建所述应用软件包的应用软件包镜像;

利用更新后的所述应用软件包镜像,启动所述应用软件包容器;

重启所述应用服务器容器;

重复执行所述将所述应用软件包容器的所述目标目录动态挂载到所述应用服务器容器的所述目标目录上的步骤。

一种javaweb应用部署装置,包括:

应用软件包获得模块,用于获得待部署的javaweb应用的应用软件包;

应用软件包镜像构建模块,用于构建所述应用软件包的应用软件包镜像;

应用软件包容器启动模块,用于利用所述应用软件包镜像,启动应用软件包容器,所述应用软件包容器中包含目标目录,所述目标目录中仅包含所述应用软件包;

应用服务器容器启动模块,用于利用纯净的应用服务器镜像,启动应用服务器容器,所述应用服务器容器中包含所述目标目录;

目标目录挂载模块,用于将所述应用软件包容器的所述目标目录动态挂载到所述应用服务器容器的所述目标目录上。

一种javaweb应用部署设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现上述任一项所述javaweb应用部署方法的步骤。

一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述javaweb应用部署方法的步骤。

应用本申请实施例所提供的技术方案,获得待部署的javaweb应用的应用软件包后,构建该应用软件包的应用软件包镜像,利用应用软件包镜像,启动应用软件包容器,该应用软件包容器中包含目标目录,目标目录中仅包含应用软件包,然后利用纯净的应用服务器镜像,启动应用服务器容器,启动的应用服务器容器中也包含该目标目录,将应用软件包容器的目标目录动态挂载到应用服务器容器的目标目录上。应用软件包镜像和应用服务器镜像是独立的,方便镜像的维护和更新,可以提高部署效率。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例中一种javaweb应用部署方法的实施流程图;

图2为本申请实施例中一种javaweb应用部署装置的结构示意图;

图3为本申请实施例中一种javaweb应用部署设备的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

参见图1所示,为本申请实施例所提供的一种javaweb应用部署方法的实施流程图,该方法可以包括以下步骤:

s110:获得待部署的javaweb应用的应用软件包。

当前待部署的任意一个javaweb应用都可以按照本申请实施例所提供的技术方案进行部署,以对外提供服务。每个待部署的javaweb应用具有相应的应用软件包。如将待部署的javaweb应用的相关文件打包为war包。

获得待部署的javaweb应用的应用软件包后,可以继续执行步骤s120的操作。

s120:构建应用软件包的应用软件包镜像。

在获得待部署的javaweb应用的应用软件包后,可以构建该应用软件包的应用软件包镜像。

在本申请的一种具体实施方式中,该步骤可以包括以下步骤:

步骤一:获得操作系统基础镜像;

步骤二:将应用软件包拷贝至操作系统基础镜像的设定目录下;

步骤三:创建目标目录;

步骤四:在配置文件中添加迁移命令,迁移命令定义为:在利用镜像启动容器时,自动将操作系统基础镜像中的设定目录下的应用软件包迁移至目标目录;

步骤五:基于配置文件,调用镜像构建命令构建应用软件包的应用软件包镜像。

为便于描述,将上述几个步骤结合起来进行说明。

在本申请实施例中,在获得待部署的javaweb应用的应用软件包后,可进一步获得操作系统基础镜像。具体的,可以以官方的alpine镜像作为操作系统基础镜像。因为alpine镜像的体积较小,大概只有5mb左右,可以有效减小所要制作的镜像的体积。

获得操作系统基础镜像后,可以将应用软件包拷贝至操作系统基础镜像的设定目录下,该设定目录可以为任意目录。如应用软件包为war包,操作系统基础镜像为alpine基础镜像,则可以将war包拷贝进alpine基础镜像中的任意目录下。然后创建目标目录。目标目录具体可以是/usr/local/tomcat/webapps目录。再在配置文件中添加迁移命令。迁移命令可以定义为:在利用镜像启动容器时,自动将操作系统基础镜像中的设定目录下的应用软件包迁移至目标目录。具体的,可以通过dockerfile的cmd命令定义:通过本镜像启动一个容器时,自动将操作系统基础镜像设定目录下的war包迁移至/usr/local/tomcat/webapps目录下。最后再基于配置文件,调用镜像构建命令构建应用软件包的应用软件包镜像。镜像构建命令具体可以是dockerbuild命令。即调用dockerbuild命令即可完成镜像的制作。这个镜像的体积约为:5mb+war包的体积。

s130:利用应用软件包镜像,启动应用软件包容器。

应用软件包容器中包含目标目录,目标目录中仅包含应用软件包。

获得待部署的javaweb应用的应用软件包,并构建应用软件包的应用软件包镜像后,可以利用应用软件包镜像,启动应用软件包容器。启动的应用软件包容器中包含目标目录,目标目录中仅包含应用软件包。

在本申请的一种具体实施方式中,可以利用应用软件包镜像,调用容器启动命令启动应用软件包容器。容器启动命令具体可以是dockerrun命令。即利用dockerrun命令启动一个仅包含war包的容器,该容器中将会有一个/usr/local/tomcat/webapps/目录,该目录下将会有war包,也就是待部署的javaweb应用。

在本申请的另一种具体实施方式中,在调用容器启动命令启动应用软件包容器时,将目标目录定义为容器的数据卷。具体的,可以通过dockerrun命令启动应用软件包容器时,可以使用-v参数将/usr/local/tomcat/webapps/目录定义为docker的数据卷volume。

s140:利用纯净的应用服务器镜像,启动应用服务器容器。

应用服务器容器中包含目标目录。

在本申请实施例中,可以确定一个纯净的应用服务器镜像,利用纯净的应用服务器镜像,可以启动应用服务器容器。如将docker官方纯净的tomcat镜像确定为应用服务器镜像,使用tomcat镜像启动一个tomcat容器。启动的应用服务器容器中包含目标目录,即/usr/local/tomcat/webapps/目录。

s150:将应用软件包容器的目标目录动态挂载到应用服务器容器的目标目录上。

启动的应用软件包容器和应用服务器容器都包含目标目录,可以将应用软件包容器的目标目录动态挂载到应用服务器容器的目标目录上。具体的,可以利用--volumes-from参数,将应用软件包容器的目标目录动态挂载到应用服务器容器的目标目录上。

以应用服务器镜像为tomcat镜像为例,tomcat官方镜像中自带/usr/local/tomcat/webapps/目录,但是目录是空的,不包含任何javaweb应用的war包。在使用dockerrun命令启动tomcat容器时,可以使用--volumes-from参数,将应用软件包容器,即war容器中的/usr/local/tomcat/webapps/目录动态地挂载到tomcat容器的/usr/local/tomcat/webapps/目录上。由于war容器中此目录下已经含有了待部署的javaweb应用的war包,所以经过此次动态挂载后,tomcat容器也就具有了该war包。这样,javaweb应用就能够在tomcat中运行起来了。

在本申请实施例中,应用服务器镜像和应用软件包镜像都为独立的镜像,方便镜像的维护。

在本申请的一个实施例中,如果应用服务器镜像有更新,则利用更新后的应用服务器镜像,启动应用服务器容器,重复执行将应用软件包容器的目标目录动态挂载到应用服务器容器的目标目录上的步骤。

在实际应用中,可能会涉及到应用服务器镜像的更新,如将tomcat7升级到tomcat8。在应用服务器镜像有更新的情况下,因为应用服务器镜像和应用软件包镜像都是独立的镜像,所以不需要对应用软件包镜像进行更新,可以利用更新后的应用服务器镜像,启动应用服务器容器,然后将应用软件包容器的目标目录动态挂载到应用服务器容器的目标目录上。

在本申请的另一个实施例中,如果应用软件包有更新,则重新构建应用软件包的应用软件包镜像;利用更新后的应用软件包镜像,启动应用软件包容器;重启应用服务器容器;重复执行将应用软件包容器的目标目录动态挂载到应用服务器容器的目标目录上的步骤。

在实际应用中,还可能会涉及到应用软件包的更新。在应用软件包有更新时,可以重新构建应用软件包的应用软件包镜像,利用更新后的应用软件包镜像,启动应用软件包容器。同样,因为应用软件包镜像和应用服务器镜像为独立的,而且各个应用软件包镜像也是相互独立的,所以,不需要对其他应用软件包镜像和应用服务器镜像进行更新。只需要重启应用服务器容器,然后将应用软件包容器的目标目录动态挂载到应用服务器容器的目标目录上。

本申请实施例是在有一个待部署的javaweb应用的基础上进行的说明。如果存在多个待部署的javaweb应用,则每个待部署的javaweb应用都可以应用本申请实施例所提供的技术方案进行部署,镜像体积较小,部署效率较高。

以应用服务器镜像为tomcat镜像,应用软件包镜像为war包镜像为例,dockerhub官方最小的tomcat镜像大概是150mb,假设一个war包的大小是10mb,按照背景技术中提到的方法所制作的镜像大小差不多就是160mb。如果有10个这样的javaweb应用的话,就是160*10=1600mb。因为每个镜像中都有一个完全相同的tomcat软件。而在本申请实施例中,假如有10个war包,每个war包都是10mb,全部镜像的总体积为:(5+10)*10+150=300mb,这远远小于之前计算的1600mb,而且随着war包数量增多,效果更加明显。

而且,本申请实施例并没有将所有的javaweb应用的war包都放入一个tomcat的webapps目录下,制作一个大而全的镜像,可以避免所有的javaweb应用要么同时启动,要么同时关闭,可以较好地符合业务需求,同时在有任何一个war包有更新时,不需要全部重做镜像,可以避免镜像的频繁制作,提高部署效率。

也就是说,本申请实施例基于sidecar设计模式,并不把war包放进tomcat的webapps目录下,而是将war包单独制作一个镜像,这个镜像中只有一个war包,没有任何其他软件。tomcat镜像也是一个干干净净的镜像,里面只有tomcat软件自带的目录和文件,不包含任何的war包。首先使用仅包含war包的镜像启动一个容器,那么这个容器中就仅含有该war包。然后,再使用官方、纯净的tomcat镜像启动一个容器,只不过在启动这个tomcat容器时,通过--volumes-from参数,将war容器中的war包动态挂载进tomcat容器,这样javaweb应用就在tomcat中运行起来了。

就好比tomcat容器是一辆带斗的摩托车,负责行驶,而war容器是一架机枪,负责射击,将机枪放进了行驶中的车斗中,然后两者就可以相互合作,达到边行驶边射击的目的。除了能够实现在行进中射击之外,如果替换上其他的war包,还能实现载货、拉客的功能,而摩托车还是那一辆摩托车,只是车斗里放了不同的东西。这也就是sidecar设计模式。

本申请实施例优化了docker镜像的制作与使用方式,从而缩小了全部镜像的总体积并且利于镜像的维护。

应用本申请实施例所提供的方法,获得待部署的javaweb应用的应用软件包后,构建该应用软件包的应用软件包镜像,利用应用软件包镜像,启动应用软件包容器,该应用软件包容器中包含目标目录,目标目录中仅包含应用软件包,然后利用纯净的应用服务器镜像,启动应用服务器容器,启动的应用服务器容器中也包含该目标目录,将应用软件包容器的目标目录动态挂载到应用服务器容器的目标目录上。应用软件包镜像和应用服务器镜像是独立的,方便镜像的维护和更新,可以提高部署效率。

相应于上面的方法实施例,本申请实施例还提供了一种javaweb应用部署装置,下文描述的javaweb应用部署装置与上文描述的javaweb应用部署方法可相互对应参照。

参见图2所示,该装置可以包括以下模块:

应用软件包获得模块210,用于获得待部署的javaweb应用的应用软件包;

应用软件包镜像构建模块220,用于构建应用软件包的应用软件包镜像;

应用软件包容器启动模块230,用于利用应用软件包镜像,启动应用软件包容器,应用软件包容器中包含目标目录,目标目录中仅包含应用软件包;

应用服务器容器启动模块240,用于利用纯净的应用服务器镜像,启动应用服务器容器,应用服务器容器中包含目标目录;

目标目录挂载模块250,用于将应用软件包容器的目标目录动态挂载到应用服务器容器的目标目录上。

应用本申请实施例所提供的装置,获得待部署的javaweb应用的应用软件包后,构建该应用软件包的应用软件包镜像,利用应用软件包镜像,启动应用软件包容器,该应用软件包容器中包含目标目录,目标目录中仅包含应用软件包,然后利用纯净的应用服务器镜像,启动应用服务器容器,启动的应用服务器容器中也包含该目标目录,将应用软件包容器的目标目录动态挂载到应用服务器容器的目标目录上。应用软件包镜像和应用服务器镜像是独立的,方便镜像的维护和更新,可以提高部署效率。

在本申请的一种具体实施方式中,应用软件包镜像构建模块220,用于:

获得操作系统基础镜像;

将应用软件包拷贝至操作系统基础镜像的设定目录下;

创建目标目录;

在配置文件中添加迁移命令,迁移命令定义为:在利用镜像启动容器时,自动将操作系统基础镜像中的设定目录下的应用软件包迁移至目标目录;

基于配置文件,调用镜像构建命令构建应用软件包的应用软件包镜像。

在本申请的一种具体实施方式中,应用软件包容器启动模块230,用于:

利用应用软件包镜像,调用容器启动命令启动应用软件包容器。

在本申请的一种具体实施方式中,应用软件包容器启动模块230,还用于:

在调用容器启动命令启动应用软件包容器时,将目标目录定义为容器的数据卷。

在本申请的一种具体实施方式中,目标目录挂载模块250,用于:

利用--volumes-from参数,将应用软件包容器的目标目录动态挂载到应用服务器容器的目标目录上。

在本申请的一种具体实施方式中,还包括应用服务器镜像更新模块,用于:

如果应用服务器镜像有更新,则利用更新后的应用服务器镜像,启动应用服务器容器;

重复执行将应用软件包容器的目标目录动态挂载到应用服务器容器的目标目录上的步骤。

在本申请的一种具体实施方式中,还包括应用软件包更新模块,用于:

如果应用软件包有更新,则重新构建应用软件包的应用软件包镜像;

利用更新后的应用软件包镜像,启动应用软件包容器;

重启应用服务器容器;

重复执行将应用软件包容器的目标目录动态挂载到应用服务器容器的目标目录上的步骤。

相应于上面的方法实施例,本申请实施例还提供了一种javaweb应用部署设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行计算机程序时实现上述javaweb应用部署方法的步骤。

如图3所示,为javaweb应用部署设备的组成结构示意图,javaweb应用部署设备可以包括:处理器10、存储器11、通信接口12和通信总线13。处理器10、存储器11、通信接口12均通过通信总线13完成相互间的通信。

在本申请实施例中,处理器10可以为中央处理器(centralprocessingunit,cpu)、特定应用集成电路、数字信号处理器、现场可编程门阵列或者其他可编程逻辑器件等。

处理器10可以调用存储器11中存储的程序,具体的,处理器10可以执行javaweb应用部署方法的实施例中的操作。

存储器11中用于存放一个或者一个以上程序,程序可以包括程序代码,程序代码包括计算机操作指令,在本申请实施例中,存储器11中至少存储有用于实现以下功能的程序:

获得待部署的javaweb应用的应用软件包;

构建应用软件包的应用软件包镜像;

利用应用软件包镜像,启动应用软件包容器,应用软件包容器中包含目标目录,目标目录中仅包含应用软件包;

利用纯净的应用服务器镜像,启动应用服务器容器,应用服务器容器中包含目标目录;

将应用软件包容器的目标目录动态挂载到应用服务器容器的目标目录上。

在一种可能的实现方式中,存储器11可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及至少一个功能(比如镜像构建功能、容器启动功能)所需的应用程序等;存储数据区可存储使用过程中所创建的数据,如软件包数据、配置文件数据等。

此外,存储器11可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件或其他易失性固态存储器件。

通信接口13可以为通信模块的接口,用于与其他设备或者系统连接。

当然,需要说明的是,图3所示的结构并不构成对本申请实施例中javaweb应用部署设备的限定,在实际应用中javaweb应用部署设备可以包括比图3所示的更多或更少的部件,或者组合某些部件。

相应于上面的方法实施例,本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述javaweb应用部署方法的步骤。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1