CN110825399B - 一种应用程序的部署方法及装置 - Google Patents

一种应用程序的部署方法及装置 Download PDF

Info

Publication number
CN110825399B
CN110825399B CN201911080828.1A CN201911080828A CN110825399B CN 110825399 B CN110825399 B CN 110825399B CN 201911080828 A CN201911080828 A CN 201911080828A CN 110825399 B CN110825399 B CN 110825399B
Authority
CN
China
Prior art keywords
application program
application
service
code
image
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.)
Active
Application number
CN201911080828.1A
Other languages
English (en)
Other versions
CN110825399A (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.)
Zhengzhou Xizhi Information Technology Co ltd
Original Assignee
Zhengzhou Xizhi Information Technology Co 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 Zhengzhou Xizhi Information Technology Co ltd filed Critical Zhengzhou Xizhi Information Technology Co ltd
Priority to CN201911080828.1A priority Critical patent/CN110825399B/zh
Publication of CN110825399A publication Critical patent/CN110825399A/zh
Application granted granted Critical
Publication of CN110825399B publication Critical patent/CN110825399B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了一种应用程序的部署方法及装置,其中,方法包括:在接收到应用程序的代码发布指令的情况下,拉取应用程序的应用镜像;依据应用镜像中的应用程序代码和应用程序代码中调用的类库构成的完整应用程序代码,生成版本镜像;启动新的代码容器;将新的代码容器挂载集群共享数据卷;将完整应用程序代码拷贝到集群共享数据卷中;获取应用程序的服务镜像;启动新的服务容器;将新的服务容器挂载数据卷。采用本申请提供的应用程序的部署方法,可以解决现有技术在应用升级过程中出现的应用版本混乱的问题。

Description

一种应用程序的部署方法及装置
技术领域
本申请涉及电子信息领域,尤其涉及一种应用程序的部署方法及装置。
背景技术
应用程序(包含应用程序代码、应用程序代码运行依赖的服务(代码运行环境),为了描述以下简称应用)部署完成后,可对外提供服务。
目前,应用部署的方式包括虚拟机部署,即将单台物理机硬件资源物理隔离成多个虚拟机,然后,在不同虚拟机上分别部署不同的应用。
但是,通过虚拟机部署应用的方式,在应用升级过程中会出现应用版本混乱的问题。
发明内容
本申请提供了一种应用程序的部署方法及装置,目的在于解决应用升级过程中应用版本混乱的问题。
为了实现上述目的,本申请提供了以下技术方案:
本申请提供了一种应用程序的部署方法,包括:
在接收到应用程序的代码发布指令的情况下,拉取所述应用程序的应用镜像;
依据所述应用镜像中的应用程序代码和所述应用程序代码中调用的类库构成的完整应用程序代码,生成版本镜像;
启动新的代码容器;
将所述新的代码容器挂载集群共享数据卷;
将所述完整应用程序代码拷贝到所述集群共享数据卷中;
获取所述应用程序的服务镜像;
启动新的服务容器;
将所述新的服务容器挂载数据卷。
可选的,在所述依据所述应用镜像中的应用程序代码和所述应用程序代码中调用的类库构成的完整应用程序代码,生成版本镜像之前,还包括:
对所述应用程序代码进行规范检测和单元测试;
在所述应用程序代码不符合预设的规范检测条件的情况下,输出所述预设的规范检测条件中所述应用程序代码不符合的规范检测条件;
在所述应用程序代码不符合预设的单元测试条件的情况下,输出所述预设的单元测试条件中所述应用程序代码不符合的单元测试条件;
所述依据所述应用镜像中的应用程序代码和所述应用程序代码中调用的类库构成的完整应用程序代码,生成版本镜像,具体为:
在所述应用镜像中的应用程序代码符合所述预设的规范检测条件和所述预设的单元测试条件的情况下,依据所述应用镜像中的应用程序代码和所述应用程序代码中调用的类库构成的完整应用程序代码,生成版本镜像。
可选的,所述应用程序为待升级的应用程序;
在所述将所述新的服务容器挂载数据卷之后,还包括:
对所述新的服务容器进行心跳检测;
在所述新的服务容器的心跳检测无异常的情况下,删除所述待升级的应用程序在升级前的代码容器和服务容器。
可选的,相同的服务对应同一个虚拟集群地址,所述方法还包括:
在接收到服务请求的情况下,依据服务与虚拟集群地址间的预设对应关系,确定所述服务请求指示的虚拟集群地址,得到目标虚拟集群地址;
依据所述目标虚拟集群地址指示的各个服务容器的负载,确定用于响应所述服务请求的服务容器。
可选的,所述方法还包括:
在检测到系统中已部署的任一服务容器发生故障的情况下,删除该服务容器;
部署用于提供目标服务的服务容器;所述目标服务为该服务容器提供的服务。
本申请还提供了一种应用程序的部署装置,包括:
拉取模块,用于在接收到应用程序的代码发布指令的情况下,拉取所述应用程序的应用镜像;
生成模块,用于依据所述应用镜像中的应用程序代码和所述应用程序代码中调用的类库构成的完整应用程序代码,生成版本镜像;
第一启动模块,用于启动新的代码容器;
第一挂载模块,用于将所述新的代码容器挂载集群共享数据卷;
拷贝模块,用于将所述完整应用程序代码拷贝到所述集群共享数据卷中;
获取模块,用于获取所述应用程序的服务镜像;
第二启动模块,用于启动新的服务容器;
第二挂载模块,用于将所述新的服务容器挂载数据卷。
可选的,还包括:测试模块;
所述测试模块,用于在所述依据所述应用镜像中的应用程序代码和所述应用程序代码中调用的类库构成的完整应用程序代码,生成版本镜像之前,
对所述应用程序代码进行规范检测和单元测试;
在所述应用程序代码不符合预设的规范检测条件的情况下,输出所述预设的规范检测条件中所述应用程序代码不符合的规范检测条件;
在所述应用程序代码不符合预设的单元测试条件的情况下,输出所述预设的单元测试条件中所述应用程序代码不符合的单元测试条件;
所述生成模块,用于依据所述应用镜像中的应用程序代码和所述应用程序代码中调用的类库构成的完整应用程序代码,生成版本镜像,具体为:
所述生成模块,具体用于在所述应用镜像中的应用程序代码符合所述预设的规范检测条件和所述预设的单元测试条件的情况下,依据所述应用镜像中的应用程序代码和所述应用程序代码中调用的类库构成的完整应用程序代码,生成版本镜像。
可选的,所述应用程序为待升级的应用程序;
所述装置还包括:检测模块;
所述检测模块,用于对所述新的服务容器进行心跳检测;在所述新的服务容器的心跳检测无异常的情况下,删除所述待升级的应用程序在升级前的代码容器和服务容器。
可选的,相同的服务对应同一个虚拟集群地址,所述装置还包括:
响应模块,用于在接收到服务请求的情况下,依据服务与虚拟集群地址间的预设对应关系,确定所述服务请求指示的虚拟集群地址,得到目标虚拟集群地址;依据所述目标虚拟集群地址指示的各个服务容器的负载,确定用于响应所述服务请求的服务容器。
可选的,所述装置还包括:
删除模块,用于在检测到系统中已部署的任一服务容器发生故障的情况下,删除该服务容器;部署用于提供目标服务的服务容器;所述目标服务为该服务容器提供的服务。
本申请所述的应用程序的部署方法及装置,在接收到应用程序的代码发布指令的情况下,拉取应用程序的应用镜像,依据应用镜像中的应用程序代码和应用程序代码中调用的类库构成的完整应用程序代码,生成版本镜像;启动新的代码容器;将新的代码容器挂载集群共享数据卷;将完整应用程序代码拷贝到所述集群共享数据卷中;获取应用程序的服务镜像;启动新的服务容器;将新的服务容器挂载数据卷。
即本申请是采用容器化的方式对应用进行部署,具体的,依据应用的应用镜像进行一系列的操作,完成对应用的部署。因此,在应用需要升级的情况下,工作人员只需对待升级的应用镜像进行修改,得到升级后的应用镜像,使得本申请只存在升级后的应用镜像,不会同时出现升级前的应用镜像和升级后的应用镜像,即不会出现一个应用存在多个应用镜像的情况。因此,采用本申请提供的应用程序的部署方法,可以解决现有技术在应用升级过程中出现的应用版本混乱的问题。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本神奇实施例公开的一种应用程序的部署方法的流程图;
图2为本申请实施例公开的一种服务请求的响应方法的流程图;
图3为本申请实施例公开的一种应用程序的部署装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请实施例提供的应用程序部署方法的执行主体可以为Kubernetes(简称K8s)系统,也可以为其他系统,只要可以提供容器化方式部署应用程序的系统即可。
本申请提供的应用程序部署方法可以对在K8s系统未部署过的应用程序进行部署,也可以对已在K8s系统中部署过且需要升级的应用程序进行升级。为了描述方便,以下实施例简称为应用程序。在本申请实施例中以K8S系统为例进行介绍。即本申请实施例中的应用程序可以为未部署在K8s系统的应用程序。本申请实施例中的应用程序还可以为已部署在K8s系统中部署且待升级的应用程序。
在本申请实施例中,工作人员事先准备应用镜像和应用镜像依赖的服务镜像。并且,工作人员事先将应用程序和该应用程序依赖的服务编排到同一个文件。具体的,可以采用compose进行编排,得到yaml文件,并将yaml文件上传到K8s系统中,以供K8s系统后续使用。
图1为本申请实施例提供的一种应用程序的部署方法,包括以下步骤:
S101、在接收到应用程序的规范检测指令的情况下,判断应用程序代码是否符合预设的规范检测条件,如果否,则执行S102,如果是,则执行S103。
如果本实施例中的应用程序是未在K8s系统中部署过,本步骤是要在K8s系统部署的情况下,本步骤中的应用程序代码就是用户事先准备的应用镜像中的应用程序代码。
如果本实施例中的应用程序是已在K8s系统中部署过且待升级的应用程序,本步骤中的应用程序代码是用户修改后的应用镜像中的应用程序代码。
在本步骤中,规范检测为检测应用程序代码是否符合预设的规范检测条件。
在实际中,在应用程序的代码被用户提交到代码仓库后,应用程序的代码中含有用于指示规范检测、单元测试、镜像制作和代码分布的请求,在K8s系统接收到各项请求的情况下,在容器中执行相应的操作。
在实际中,应用程序代码中可以包括规范检测、单元测试、镜像制作和代码分布这四项的各项请求,也可以只包括镜像制作和代码分布这两项的请求,但是,至少包括镜像制作和代码分布这两项的请求。在实际中,应用程序代码中包括的请求项可以根据实际情况设定,本实施例不对应用程序代码中包括的请求项进行限定。
在本步骤中,判断应用程序代码是否符合预设的规范检测条件的具体实现方式为现有技术,这里不再赘述。
S102、输出预设的规范检测条件中应用程序代码不符合的规范检测条件。
具体的,可以以邮件的方式输出,当然,在实际中,还可以以其他的方式输出,例如,界面显示的方式。本实施例不对具体的输出方式作限定。
执行完本步骤后,结束。
S103、在接收到应用程序的单元测试指令的情况下,判断应用程序代码是否符合预设的单元测试条件,如果否,则执行S104,如果是,则执行S105。
单元测试为测试应用程序代码是否符合预设的单元测试条件。
在本步骤中,判断应用程序代码是否符合预设的单元测试条件的具体实现方式为现有技术,这里不再赘述。
S104、输出预设的单元测试条件中应用程序代码不符合的单元测试条件。
具体的,可以以邮件的方式输出,当然,在实际中,还可以以其他的方式输出,例如,界面显示的方式。本实施例不对具体的输出方式作限定。
上述S101~S104的目的是:对所述应用程序代码进行规范检测和单元测试,并在应用程序代码不符合预设的规范检测条件的情况下,输出预设的规范检测条件中应用程序代码不符合的规范检测条件。在应用程序代码不符合预设的单元测试条件的情况下,输出预设的单元测试条件中应用程序代码不符合的单元测试条件。
需要说明的是,上述S101~S104是可选步骤。当执行上述S101~S104的情况下,可以使得部署的应用程序的准确性更高。
S105、在接收到应用程序的代码发布指令的情况下,拉取应用程序的应用镜像。
在本步骤中,代码发布指令指示K8s系统进行镜像制作和代码发布。其中,镜像制作是依据应用程序代码生成版本镜像。
在本步骤中,应用镜像是工作人员事先依据应用程序生成的镜像。
如果本实施例中的应用程序是未部署在K8s系统,需要本实施例进行部署,则本步骤中应用程序的应用镜像是用户在事先提交的应用镜像。
如果本实施例中的应用程序是已部署在K8s系统且需要升级的应用程序,则本步骤中的应用程序的应用镜像是用户事先提交的修改后的应用镜像,该修改后的应用镜像是待升级的应用程序的应用镜像。
S106、依据应用镜像中的应用程序代码和应用程序代码中调用的类库构成的完整应用程序代码,生成版本镜像。
具体的,本步骤依据应用镜像中的应用程序代码和应用程序代码中调用的类库构成的完整应用程序代码,生成版本镜像的步骤可以包括步骤A1~步骤A4:
A1、确定应用镜像中的应用程序代码所调用的类库。
由于应用镜像中所包含的应用程序代码调用了某些类库,但是,应用程序代码中并不包含调用的类库的代码,因此,在本步骤中,确定应用程序代码中所调用的类库。
A2、拉取类库。
本步骤中,获取类库代码。
A3、依据应用程序代码和类库代码,生成完整应用程序代码。
具体的,依据应用程序代码和类库代码生成完整应用程序代码的过程为现有技术,这里不再赘述。
A4、依据完整应用程序代码,生成版本镜像。
S107、将版本镜像推送到预设的镜像仓库。
在本步骤中,镜像仓库可以为K8s系统的镜像仓库,也可以不是K8s系统的镜像仓库。
S108、启动新的代码容器。
在本步骤中,如果待部署的应用程序是未部署过的应用程序,则启动代码容器。如果待部署的应用程序是已经部署过且等待升级的应用程序,则本步骤中,启动新的代码容器,即是启动一个与该应用程序的已部署的代码容器不同的代码容器。
S109、将新的代码容器挂载集群共享数据卷。
本步骤的具体实现方式为现有技术,这里不再赘述。
S110、将版本镜像指示的完整应用程序代码拷贝到集群共享数据卷中。
S111、获取该应用程序的服务镜像。
在本步骤中,可以通过用户上传的yaml文件中编排的应用镜像和对应的服务镜像,确定应用程序的服务镜像。
S112、启动新的服务容器。
S113、将新的服务容器挂载数据卷。
S114、对新的服务容器进行心跳检测。
为了检测新的服务容器是否可以正常工作,本步骤对新的服务容器进行心跳检测。
S115、判断新的服务容器的心跳检测是否正常,如果否,则结束,如果是,则执行S116。
在本实施例中,如果应用程序是未部署过的应用程序,在本步骤中,如果新的服务容器的心跳检测正常的情况下,则结束。如果应用程序是已部署过且待升级的应用程序,在新的服务容器的心跳检测正常的情况下,还需执行S116。
S116、删除待升级的应用程序在升级前的代码容器和服务容器。
S117、在检测到系统中已部署的任一服务容器发生故障的情况下,删除该服务容器。
在本实施例中,检测系统中已部署的服务容器是否发生故障,在任一服务容器发生故障的情况下,删除该服务容器,并执行S118。
S118、部署用于提供目标服务的服务容器。
在本步骤中,目标服务为该服务容器提供的服务,即重新部署与删除的服务容器提供相同服务的服务容器。
需要说明的是,上述S114~S118是可选步骤。
本实施例具有以下有益效果:
有益效果一:
本申请是采用容器化的方式对应用进行部署,具体的,依据应用的应用镜像进行一系列的操作,完成对应用的部署。因此,在应用需要升级的情况下,工作人员只需对待升级的应用镜像进行修改,得到升级后的应用镜像,使得本申请只存在升级后的应用镜像,不会同时出现升级前的应用镜像和升级后的应用镜像,即不会出现一个应用存在多个应用镜像的情况。因此,采用本申请提供的应用程序的部署方法,可以解决现有技术在应用升级过程中出现的应用版本混乱的问题。
有益效果二:
在本实施例中,在检测到系统中已部署的任一服务容器发生故障的情况下,删除该服务容器,并重新部署与删除的服务人容器提供相同服务的服务容器。从而实现错误恢复的效果。
有益效果三:
在本实施例中,在新的服务容器的心跳检测正常后,删除应用程序升级前的代码容器和升级前的服务容器,使得在新的服务容器可以正常提供服务的情况下,才销毁应用程序升级前的代码容器和升级前的服务容器,从而实现了平滑升级,即在新的服务容器无法正常提供服务的情况下,还可以由应用程序升级前的服务容器来提供服务。
有益效果四:
在本实施例中包含S101~S104的情况下,用户可以借用K8s系统对应用程序代码进行规范检测与单元测试,在规范检测与单元测试任意一项未通过的情况下,可以输出不通过的原因,并且为用户提供不通过的原因,方便用户对应用程序代码的修改,直至修改后的应用程序代码的规范检测和单元测试都通过的情况下,才执行镜像制作与代码发布,从而实现对应用程序的持续集成。
图2为本申请实施例提供的一种服务请求的响应方法,包括以下步骤:
S201、在接收到服务请求的情况下,依据服务与虚拟集群地址间的预设对应关系,确定服务请求指示的虚拟集群地址,得到目标虚拟集群地址。
在本实施例中,将系统中提供相同服务的服务容器创建虚拟集群地址,从而得到服务与虚拟集群地址间的对应关系。其中,在该对应关系中,相同服务对应的虚拟集群地址相同,不同服务对应的虚拟集群地址不同。
具体的,虚拟集群地址可以为虚拟集群IP,当然,在实际中,虚拟集群地址还可以为其他形式,本实施例不对虚拟集群地址的具体形式作限定。
S202、依据目标虚拟集群地址指示的各个服务容器的负载,确定用于响应服务请求的服务容器。
在本步骤中,目标虚拟集群地址指示的各个服务容器为:虚拟集群地址与服务间的对应关系中,提供该目标虚拟集群地址的服务的各个服务容器。
由于目标虚拟集群地址指示的各个服务容器的负载不同,在本步骤中,为了提高对服务请求的响应效率,依据目标虚拟集群地址指示的各个服务容器的负载,确定用于响应服务请求的服务容器,具体的,可以将负载量最小的服务容器确定为用于响应服务请求的服务容器。
图3为本申请实施例提供的一种应用程序的部署装置,包括:拉取模块301、生成模块302、第一启动模块303、第一挂载模块304、拷贝模块305、获取模块306、第二启动模块307和第二挂载模块308;
拉取模块301,用于在接收到应用程序的代码发布指令的情况下,拉取应用程序的应用镜像;
生成模块302,用于依据应用镜像中的应用程序代码和应用程序代码中调用的类库构成的完整应用程序代码,生成版本镜像;
第一启动模块303,用于启动新的代码容器;
第一挂载模块304,用于将新的代码容器挂载集群共享数据卷;
拷贝模块305,用于将完整应用程序代码拷贝到集群共享数据卷中;
获取模块306,用于获取应用程序的服务镜像;
第二启动模块307,用于启动新的服务容器;
第二挂载模块308,用于将新的服务容器挂载数据卷。
可选的,还包括:测试模块309;
测试模块309,用于在依据所述应用镜像中的应用程序代码和应用程序代码中调用的类库构成的完整应用程序代码,生成版本镜像之前,对应用程序代码进行规范检测和单元测试;在应用程序代码不符合预设的规范检测条件的情况下,输出预设的规范检测条件中应用程序代码不符合的规范检测条件;在应用程序代码不符合预设的单元测试条件的情况下,输出预设的单元测试条件中应用程序代码不符合的单元测试条件;
生成模块302,用于依据应用镜像中的应用程序代码和应用程序代码中调用的类库构成的完整应用程序代码,生成版本镜像,具体为:
生成模块302,具体用于在应用镜像中的应用程序代码符合预设的规范检测条件和预设的单元测试条件的情况下,依据应用镜像中的应用程序代码和应用程序代码中调用的类库构成的完整应用程序代码,生成版本镜像。
可选的,应用程序为待升级的应用程序;
该装置还包括:检测模块310;
检测模块310,用于对新的服务容器进行心跳检测;在新的服务容器的心跳检测无异常的情况下,删除待升级的应用程序在升级前的代码容器和服务容器。
可选的,相同的服务对应同一个虚拟集群地址,装置还包括:
响应模块311,用于在接收到服务请求的情况下,依据服务与虚拟集群地址间的预设对应关系,确定服务请求指示的虚拟集群地址,得到目标虚拟集群地址;依据目标虚拟集群地址指示的各个服务容器的负载,确定用于响应服务请求的服务容器。
可选的,装置还包括:
删除模块311,用于在检测到系统中已部署的任一服务容器发生故障的情况下,删除该服务容器;部署用于提供目标服务的服务容器;目标服务为该服务容器提供的服务。
本申请实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本申请实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (8)

1.一种应用程序的部署方法,其特征在于,包括:
在接收到应用程序的代码发布指令的情况下,拉取所述应用程序的应用镜像;
依据所述应用镜像中的应用程序代码和所述应用程序代码中调用的类库构成的完整应用程序代码,生成版本镜像;
启动新的代码容器;
将所述新的代码容器挂载集群共享数据卷;
将所述完整应用程序代码拷贝到所述集群共享数据卷中;
获取所述应用程序的服务镜像;
启动新的服务容器;
将所述新的服务容器挂载数据卷;
相同的服务对应同一个虚拟集群地址,所述方法还包括:
在接收到服务请求的情况下,依据服务与虚拟集群地址间的预设对应关系,确定所述服务请求指示的虚拟集群地址,得到目标虚拟集群地址;
依据所述目标虚拟集群地址指示的各个服务容器的负载,确定用于响应所述服务请求的服务容器。
2.根据权利要求1所述的方法,其特征在于,在所述依据所述应用镜像中的应用程序代码和所述应用程序代码中调用的类库构成的完整应用程序代码,生成版本镜像之前,还包括:
对所述应用程序代码进行规范检测和单元测试;
在所述应用程序代码不符合预设的规范检测条件的情况下,输出所述预设的规范检测条件中所述应用程序代码不符合的规范检测条件;
在所述应用程序代码不符合预设的单元测试条件的情况下,输出所述预设的单元测试条件中所述应用程序代码不符合的单元测试条件;
所述依据所述应用镜像中的应用程序代码和所述应用程序代码中调用的类库构成的完整应用程序代码,生成版本镜像,具体为:
在所述应用镜像中的应用程序代码符合所述预设的规范检测条件和所述预设的单元测试条件的情况下,依据所述应用镜像中的应用程序代码和所述应用程序代码中调用的类库构成的完整应用程序代码,生成版本镜像。
3.根据权利要求1~2任意一项所述的方法,其特征在于,所述应用程序为待升级的应用程序;
在所述将所述新的服务容器挂载数据卷之后,还包括:
对所述新的服务容器进行心跳检测;
在所述新的服务容器的心跳检测无异常的情况下,删除所述待升级的应用程序在升级前的代码容器和服务容器。
4.根据权利要求1所述的方法,其特征在于,还包括:
在检测到系统中已部署的任一服务容器发生故障的情况下,删除该服务容器;
部署用于提供目标服务的服务容器;所述目标服务为该服务容器提供的服务。
5.一种应用程序的部署装置,其特征在于,包括:
拉取模块,用于在接收到应用程序的代码发布指令的情况下,拉取所述应用程序的应用镜像;
生成模块,用于依据所述应用镜像中的应用程序代码和所述应用程序代码中调用的类库构成的完整应用程序代码,生成版本镜像;
第一启动模块,用于启动新的代码容器;
第一挂载模块,用于将所述新的代码容器挂载集群共享数据卷;
拷贝模块,用于将所述完整应用程序代码拷贝到所述集群共享数据卷中;
获取模块,用于获取所述应用程序的服务镜像;
第二启动模块,用于启动新的服务容器;
第二挂载模块,用于将所述新的服务容器挂载数据卷;
相同的服务对应同一个虚拟集群地址,所述装置还包括:
响应模块,用于在接收到服务请求的情况下,依据服务与虚拟集群地址间的预设对应关系,确定所述服务请求指示的虚拟集群地址,得到目标虚拟集群地址;依据所述目标虚拟集群地址指示的各个服务容器的负载,确定用于响应所述服务请求的服务容器。
6.根据权利要求5所述的装置,其特征在于,还包括:测试模块;
所述测试模块,用于在所述依据所述应用镜像中的应用程序代码和所述应用程序代码中调用的类库构成的完整应用程序代码,生成版本镜像之前,
对所述应用程序代码进行规范检测和单元测试;
在所述应用程序代码不符合预设的规范检测条件的情况下,输出所述预设的规范检测条件中所述应用程序代码不符合的规范检测条件;
在所述应用程序代码不符合预设的单元测试条件的情况下,输出所述预设的单元测试条件中所述应用程序代码不符合的单元测试条件;
所述生成模块,用于依据所述应用镜像中的应用程序代码和所述应用程序代码中调用的类库构成的完整应用程序代码,生成版本镜像,具体为:
所述生成模块,具体用于在所述应用镜像中的应用程序代码符合所述预设的规范检测条件和所述预设的单元测试条件的情况下,依据所述应用镜像中的应用程序代码和所述应用程序代码中调用的类库构成的完整应用程序代码,生成版本镜像。
7.根据权利要求5~6任意一项所述的装置,其特征在于,所述应用程序为待升级的应用程序;
所述装置还包括:检测模块;
所述检测模块,用于对所述新的服务容器进行心跳检测;在所述新的服务容器的心跳检测无异常的情况下,删除所述待升级的应用程序在升级前的代码容器和服务容器。
8.根据权利要求5所述的装置,其特征在于,所述装置还包括:
删除模块,用于在检测到系统中已部署的任一服务容器发生故障的情况下,删除该服务容器;部署用于提供目标服务的服务容器;所述目标服务为该服务容器提供的服务。
CN201911080828.1A 2019-11-07 2019-11-07 一种应用程序的部署方法及装置 Active CN110825399B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911080828.1A CN110825399B (zh) 2019-11-07 2019-11-07 一种应用程序的部署方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911080828.1A CN110825399B (zh) 2019-11-07 2019-11-07 一种应用程序的部署方法及装置

Publications (2)

Publication Number Publication Date
CN110825399A CN110825399A (zh) 2020-02-21
CN110825399B true CN110825399B (zh) 2024-02-20

Family

ID=69553093

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911080828.1A Active CN110825399B (zh) 2019-11-07 2019-11-07 一种应用程序的部署方法及装置

Country Status (1)

Country Link
CN (1) CN110825399B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111679890A (zh) * 2020-06-10 2020-09-18 北京金山云网络技术有限公司 服务镜像的生成方法、装置及电子设备
CN111800303A (zh) * 2020-09-09 2020-10-20 杭州朗澈科技有限公司 混合云场景下保证可用集群数量的方法、装置及系统
CN112084008B (zh) * 2020-09-10 2023-02-17 浪潮云信息技术股份公司 一种基于容器技术快速部署云管系统的方法
CN113076248B (zh) * 2021-04-08 2021-11-30 马上消费金融股份有限公司 一种应用处理方法、装置、设备及可读存储介质
JP2023102641A (ja) * 2022-01-12 2023-07-25 株式会社日立製作所 計算機システム及びスケールアップ管理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108833163A (zh) * 2018-06-13 2018-11-16 平安科技(深圳)有限公司 Linux虚拟服务器的创建方法、装置、计算机设备及存储介质
CN109324819A (zh) * 2018-09-28 2019-02-12 中国平安财产保险股份有限公司 服务器代码部署方法、装置、服务器设备及存储介质
CN109358858A (zh) * 2018-09-19 2019-02-19 网易(杭州)网络有限公司 自动化部署方法、装置、介质及电子设备
WO2019095936A1 (zh) * 2017-11-15 2019-05-23 腾讯科技(深圳)有限公司 容器镜像的构建方法、系统、服务器、装置及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10992636B2 (en) * 2017-09-29 2021-04-27 Cisco Technology, Inc. Mitigating network/hardware address explosion in network devices

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019095936A1 (zh) * 2017-11-15 2019-05-23 腾讯科技(深圳)有限公司 容器镜像的构建方法、系统、服务器、装置及存储介质
CN108833163A (zh) * 2018-06-13 2018-11-16 平安科技(深圳)有限公司 Linux虚拟服务器的创建方法、装置、计算机设备及存储介质
CN109358858A (zh) * 2018-09-19 2019-02-19 网易(杭州)网络有限公司 自动化部署方法、装置、介质及电子设备
CN109324819A (zh) * 2018-09-28 2019-02-12 中国平安财产保险股份有限公司 服务器代码部署方法、装置、服务器设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
智慧路灯远程监控平台的设计与实现;程婷婷;胡炜薇;崔佳冬;;计算机应用与软件(03);全文 *

Also Published As

Publication number Publication date
CN110825399A (zh) 2020-02-21

Similar Documents

Publication Publication Date Title
CN110825399B (zh) 一种应用程序的部署方法及装置
CN110058873B (zh) 应用页面更新方法、装置、设备和存储介质
US8972967B2 (en) Application packages using block maps
CN109597677B (zh) 用于处理信息的方法和装置
WO2017049828A1 (zh) 基于Linux的数据处理方法、装置和系统
US20130138934A1 (en) Loading configuration information
CN109614167B (zh) 一种管理插件的方法和系统
US20170322826A1 (en) Setting support program, setting support method, and setting support device
JP2013511766A (ja) クラスタベースのjavaアプリケーションシステムのコードをロードおよび更新する装置および方法
WO2016202000A1 (zh) 差分回退升级方法及装置
CN111708771A (zh) 数据查重方法、装置、设备及计算机存储介质
JP6859463B2 (ja) 仮想マシンを起動させるための方法、装置、デバイス及び媒体
JP2013534347A (ja) 高性能コンピューティングアプリケーションの実行のためのシステムおよび方法
CN114391136A (zh) 增强的虚拟机镜像管理系统
CN112667491B (zh) 虚拟机的功能测试方法及装置
CN111274211B (zh) 应用文件的存储方法、装置及系统
CN115964061A (zh) 插件更新方法、装置、电子设备和计算机可读存储介质
CN113703823A (zh) 一种bmc固件升级方法、装置、电子设备及存储介质
CN113741913A (zh) 图片配置方法、装置、系统和存储介质
CN110825417A (zh) 应用程序更新方法及系统
CN114240265B (zh) 一种基于混合环境的产品部署方法及装置
CN116893834B (zh) 负载更新方法、装置、系统、电子设备及可读存储介质
CN110399188B (zh) 初始化操作支持系统
CN116089020B (zh) 虚拟机运行方法、扩容方法、扩容系统
CN112732362B (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