CN111949276A - 一种基于容器方式自动部署应用程序的系统及方法 - Google Patents

一种基于容器方式自动部署应用程序的系统及方法 Download PDF

Info

Publication number
CN111949276A
CN111949276A CN202010823493.4A CN202010823493A CN111949276A CN 111949276 A CN111949276 A CN 111949276A CN 202010823493 A CN202010823493 A CN 202010823493A CN 111949276 A CN111949276 A CN 111949276A
Authority
CN
China
Prior art keywords
container
platform
deployment
application
package
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
CN202010823493.4A
Other languages
English (en)
Other versions
CN111949276B (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.)
Inspur Cloud Information Technology Co Ltd
Original Assignee
Inspur Cloud 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 Inspur Cloud Information Technology Co Ltd filed Critical Inspur Cloud Information Technology Co Ltd
Priority to CN202010823493.4A priority Critical patent/CN111949276B/zh
Publication of CN111949276A publication Critical patent/CN111949276A/zh
Application granted granted Critical
Publication of CN111949276B publication Critical patent/CN111949276B/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/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本发明提供一种基于容器方式自动部署应用程序的系统及方法,属于敏捷开发技术领域,包括:1)、应用包管理模块;2)、自动部署模块;3)、容器管理模块;4)、应用发布模块。第三方开发者将应用托管在平台,平台通过自建网盘统一存储代码包,由scp协议将代码包上传到远程服务器,利用ssh协议执行预定命令将代码包部署到容器中运行。解决了多前端项目集成时,系统部署维护混乱等问题。

Description

一种基于容器方式自动部署应用程序的系统及方法
技术领域
本发明涉及敏捷开发技术,尤其涉及一种基于容器方式自动部署应用程序的系统及方法。
背景技术
随着政务服务业务系统集成事项的增多,个性化业务的需求也欲加迫切。以往的开发过程中,各业务系统开发者都以通用模板渲染业务事项的数据进行显示;对于部门个性化业务的需求,由业务系统开发者单独开发模板进行渲染,相关代码被深度耦合到系统中。此种方式产生两个主要问题:对于单个个性化业务,各业务系统都需要重复开发相似的模板,造成重复工作;个性化业务相关代码耦合到通用系统中,增加了项目升级系统时的运营成本。
发明内容
为了解决以上技术问题,本发明提供了一种基于容器方式自动部署应用程序的系统,解决了多前端项目集成时,系统部署维护混乱等问题,可减少系统运营中的重复操作,为运维过程提供质量保障障,强力支撑敏捷开发与敏捷运维一体化。
本发明的技术方案是:
一种基于容器方式自动部署应用程序的系统,包括:
1)、应用包管理模块,可数次修改上传程序包,平台只记录最新程序包信息;
2)、自动部署模块,通过将人工部署的操作过程抽象成脚本交由平台执行来实现自动部署过程;
3)、容器管理模块,负责管理监控可用服务器及对应容器;
4)、应用发布模块,负责在应用部署后生成唯一的访问地址,交由业务系统接入。
进一步的,
通过自建网盘统一存储第三方开发者开发的应用源码或可部署程序包,将应用包唯一标识和程序的应用编码对应存储在平台数据库,由自建网盘提供文件下载功能。
应用包来源分为两部分:源码托管和可部署程序包;其中
源码托管
对于平台可识别语言开发的源码包,开发者在平台配置源码仓库地址,平台通过此地址拉取源码,在部署前使用通用编译命令自动打包,生成可部署程序包;
可部署程序包
如果项目结构过于复杂或源码不可共享,开发者可本地编译后将可部署程序包上传到平台托管,平台提供下载功能;
平台部署支持zip、war压缩格式,平台部署时会根据文件后缀格式自动选择解压命令进行解压。
进一步的,
自动部署模块分为两个环节:
1)平台将网盘存储的代码包通过scp协议以文件流形式上传到指定部署环境服务器中
平台管理员在前端页面查看可用部署环境服务器及对应环境中的可用容器,人为指定部署容器提交给后端;
整个传输流程包括:平台根据应用的应用编码,查询到网盘中的唯一标识,从网盘获得文件流;根据部署容器所在环境获取远程服务器ip、端口进行连接;根据部署容器获取对应容器在服务器中的路径;将文件流使用scp命令写入到服务器指定路径下,完成程序包传输过程;
2)利用ssh在部署环境服务器执行预定命令将程序包部署到指定容器中运行
平台开发者在程序中预置不同容器类型(tomcat/nginx)对应的部署脚本,在完成程序包传输过程后,根据所选容器类型及程序包压缩方式,执行预定脚本进行部署。
进一步的,
对于容器管理模块
管理:由手动添加或删除部署环境及容器;监控:程序启动后定时查询容器可用状态,发现异常容器时更改数据库中对应状态位并告警通知处理。
部署环境服务器需为Linux平台,centos7系统;由centos提供`sshd`服务,在平台系统中配置服务器的ip、端口、用户名、密码,平台依此与服务器连接进行交互;分配非root用户交由平台进行注册接入。
部署容器与部署环境服务器关联,按运行方式可分为两种,由平台管理员选择:
1)直接部署的tomcat/nginx
此种方式的容器指一个tomcat或nginx服务,由平台管理员解压tomcat/nginx包到服务器特定目录,通过对应命令直接启动;
2)包含tomcat/nginx的docker镜像
此种方式的容器特指docker容器;对于tomcat容器,启动时将webapps映射到宿主机的特定目录,平台对其同“直接部署”类进行操作;使用docker容器可在隔离容器中并行运行和管理应用,解决运行环境依赖问题的同时可获得更好的计算密度。
进一步的,
在部署程序包时,将程序包名前缀统一改为应用id作为部署目录名,保证部署目录名的唯一性;同时以应用id作为目录名。
此外,本发明还提供了一种基于容器方式自动部署应用程序的方法,第三方开发者将应用托管在平台,平台通过自建网盘统一存储代码包,由scp协议将代码包上传到远程服务器,利用ssh协议执行预定命令将代码包部署到容器中运行。
进一步的,
通过scp协议上传自建网盘代码包到指定服务器:使用自建网盘存储开发程序包,代码包以文件流的方式从网盘直接复制到部署环境服务器中,不经过前端页面;
利用ssh在部署环境服务器执行预定命令将程序包部署到指定容器中运行:预先抽象对应容器的自动部署脚本,根据前端选择执行预定命令将程序包部署到指定程序中运行;
运行定时任务连接部署环境服务器,通过检查容器进程状态来判断容器状态,发现异常容器及时告警运维人员。
本发明的有益效果是
可以实现自动部署应用到特定服务器的容器,减少人为错误和人力需求,提高运维可靠性。应用可通过访问地址被多个业务系统接入,避免“二次开发”,减轻了各业务系统开发人员的重复任务,提高了工作效率,并且满足不同政府部门、不同业务领域下的业务个性化定制需求。
附图说明
图1是本发明自动部署过程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
各业务系统开发者只关注通用业务逻辑,将不同部门、不同业务领域下的个性化业务的模板开发工作交由第三方开发者完成,开发完成后由平台统一托管部署,生成页面的访问链接,各业务系统按需嵌入此链接进行页面展示。
本发明应用于代码托管平台、基于容器托管前端项目并实现自动部署。第三方开发者将应用托管在平台,平台通过自建网盘统一存储代码包,由scp协议将代码包上传到远程服务器,利用ssh协议执行预定命令将代码包部署到容器中运行。
①应用包管理模块
每个应用可多次修改上传程序包,平台只记录最新程序包信息。
平台通过自建网盘统一存储第三方开发者开发的应用源码或可部署程序包,将应用包唯一标识和程序的应用编码对应存储在平台数据库,由自建网盘提供文件下载功能。应用包来源可分为两部分:
Figure BDA0002635214670000051
源码托管。
对于平台可识别语言开发的源码包,开发者在平台配置源码仓库地址,平台通过此地址拉取源码,在部署前使用通用编译命令自动打包,生成可部署程序包。
如Gitlab中管理的VUE项目,平台通过`git clone url`摘取应用源码后,对于Linux部署环境,自动执行`npm install&&npm run build&&tar zcf${name}.tar.gz${name}`进行编译打包,得到编译后的可部署程序包。
Figure BDA0002635214670000061
可部署程序包。
如项目结构过于复杂或源码不可共享,开发者可本地编译后将可部署程序包上传到平台托管,平台提供下载功能。
平台部署支持`zip,war`等通用压缩格式,平台部署时会根据文件后缀格式自动选择解压命令进行解压。
②自动部署模块
通过将人工部署的操作过程抽象成脚本交由平台执行来实现自动部署过程。如前端项目,将程序包扩展名zip修改为war,复制程序包到tomcat容器的webapps目录下,利用tomcat自解压(不需要重启)完成。此模块分为两个环节:
a)平台将网盘存储的代码包通过scp协议以文件流形式上传到指定部署环境服务器中
平台管理员在前端页面查看可用部署环境服务器及对应环境中的可用容器,人为指定部署容器提交给后端。
整个传输流程包括:平台根据应用的应用编码,查询到网盘中的唯一标识,从网盘获得文件流;根据部署容器所在环境获取远程服务器ip、端口进行连接;根据部署容器获取对应容器在服务器中的路径;将文件流使用scp命令写入到服务器指定路径下,完成程序包传输过程。
b)利用ssh在部署环境服务器执行预定命令将程序包部署到指定容器中运行
平台开发者在程序中预置不同容器类型(tomcat/nginx)对应的部署脚本,在完成程序包传输过程后,根据所选容器类型及程序包压缩方式,执行预定脚本进行部署。
如VUE项目`zip`压缩格式的程序包部署到tomcat容器,对应脚本分为:将程序包复制到tomcat的webapps目录;重命名修改`zip`后缀为`war`;由tomcat对`war`自动解压。对于`.tar.gz`格式,可通过`tar–zxf${packageName}`进行解压,代替tomcat自解压过程。
③容器管理模块
负责管理监控可用服务器及对应容器。管理:由平台管理员手动添加或删除部署环境及容器。监控:程序启动后会定时查询容器可用状态(通过查看对应容器进程状态等方式),发现异常容器时更改数据库中对应状态位并告警通知管理员处理,保证容器的可靠性。
部署环境服务器需为Linux平台,建议centos7系统。由centos提供`sshd`服务,平台管理员在平台系统中配置服务器的ip、端口、用户名、密码,平台依此与服务器连接进行交互(服务器管理员应分配非root用户交由平台进行注册接入)。
部署容器与部署环境服务器关联,按运行方式可分为两种,由平台管理员选择:
Figure BDA0002635214670000071
直接部署的tomcat/nginx
此种方式的容器指一个tomcat或nginx服务,由平台管理员解压tomcat/nginx包到服务器特定目录,通过对应命令直接启动。直接部署对服务器的环境依赖小,仅需服务器安装Java运行环境即可启动容器,方便项目人员进行部署。适用于服务器无现成docker环境或项目人员不了解docker基本操作时使用。
Figure BDA0002635214670000072
包含tomcat/nginx的docker镜像
此种方式的容器特指docker容器。对于tomcat容器,启动时将webapps映射到宿主机的特定目录,平台对其同“直接部署”类进行操作。使用docker容器可在隔离容器中并行运行和管理应用,解决运行环境依赖问题的同时可获得更好的计算密度。
本发明实现如下功能:
1、托管第三方开发者的应用,提供一个统一的运行环境。
2、由程序提供自动部署到服务器容器的实现。使用自动部署减少重复的过程,保证部署的可靠性。
3、监控容器运行状态。
以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (10)

1.一种基于容器方式自动部署应用程序的系统,其特征在于,
包括:
1)、应用包管理模块,可数次修改上传程序包,平台只记录最新程序包信息;
2)、自动部署模块,通过将人工部署的操作过程抽象成脚本交由平台执行来实现自动部署过程;
3)、容器管理模块,负责管理监控可用服务器及对应容器;
4)、应用发布模块,负责在应用部署后生成唯一的访问地址,交由业务系统接入。
2.根据权利要求1所述的系统,其特征在于,
通过自建网盘统一存储第三方开发者开发的应用源码或可部署程序包,将应用包唯一标识和程序的应用编码对应存储在平台数据库,由自建网盘提供文件下载功能。
3.根据权利要求2所述的系统,其特征在于,
应用包来源分为两部分:源码托管和可部署程序包;其中
源码托管
对于平台可识别语言开发的源码包,开发者在平台配置源码仓库地址,平台通过此地址拉取源码,在部署前使用通用编译命令自动打包,生成可部署程序包;
可部署程序包
如果项目结构过于复杂或源码不可共享,开发者可本地编译后将可部署程序包上传到平台托管,平台提供下载功能;
平台部署支持zip、war压缩格式,平台部署时会根据文件后缀格式自动选择解压命令进行解压。
4.根据权利要求1所述的系统,其特征在于,
自动部署模块分为两个环节:
1)平台将网盘存储的代码包通过scp协议以文件流形式上传到指定部署环境服务器中
平台管理员在前端页面查看可用部署环境服务器及对应环境中的可用容器,人为指定部署容器提交给后端;
整个传输流程包括:平台根据应用的应用编码,查询到网盘中的唯一标识,从网盘获得文件流;根据部署容器所在环境获取远程服务器ip、端口进行连接;根据部署容器获取对应容器在服务器中的路径;将文件流使用scp命令写入到服务器指定路径下,完成程序包传输过程;
2)利用ssh在部署环境服务器执行预定命令将程序包部署到指定容器中运行平台开发者在程序中预置不同容器类型(tomcat/nginx)对应的部署脚本,在完成程序包传输过程后,根据所选容器类型及程序包压缩方式,执行预定脚本进行部署。
5.根据权利要求1所述的系统,其特征在于,
对于容器管理模块
管理:由手动添加或删除部署环境及容器;监控:程序启动后定时查询容器可用状态,发现异常容器时更改数据库中对应状态位并告警通知处理。
6.根据权利要求5所述的系统,其特征在于,
部署环境服务器需为Linux平台,centos7系统;由centos提供`sshd`服务,在平台系统中配置服务器的ip、端口、用户名、密码,平台依此与服务器连接进行交互;分配非root用户交由平台进行注册接入。
7.根据权利要求6所述的系统,其特征在于,
部署容器与部署环境服务器关联,按运行方式可分为两种,由平台管理员选择:
1)直接部署的tomcat/nginx
此种方式的容器指一个tomcat或nginx服务,由平台管理员解压tomcat/nginx包到服务器特定目录,通过对应命令直接启动;
2)包含tomcat/nginx的docker镜像
此种方式的容器特指docker容器;对于tomcat容器,启动时将webapps映射到宿主机的特定目录,平台对其同“直接部署”类进行操作;使用docker容器可在隔离容器中并行运行和管理应用,解决运行环境依赖问题的同时可获得更好的计算密度。
8.根据权利要求1所述的系统,其特征在于,
在部署程序包时,将程序包名前缀统一改为应用id作为部署目录名,保证部署目录名的唯一性;同时以应用id作为目录名。
9.一种基于容器方式自动部署应用程序的方法,其特征在于,第三方开发者将应用托管在平台,平台通过自建网盘统一存储代码包,由scp协议将代码包上传到远程服务器,利用ssh协议执行预定命令将代码包部署到容器中运行。
10.根据权利要求9所述的方法,其特征在于,
通过scp协议上传自建网盘代码包到指定服务器:使用自建网盘存储开发程序包,代码包以文件流的方式从网盘直接复制到部署环境服务器中,不经过前端页面;
利用ssh在部署环境服务器执行预定命令将程序包部署到指定容器中运行:预先抽象对应容器的自动部署脚本,根据前端选择执行预定命令将程序包部署到指定程序中运行;
运行定时任务连接部署环境服务器,通过检查容器进程状态来判断容器状态,发现异常容器及时告警运维人员。
CN202010823493.4A 2020-08-17 2020-08-17 一种基于容器方式自动部署应用程序的系统及方法 Active CN111949276B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010823493.4A CN111949276B (zh) 2020-08-17 2020-08-17 一种基于容器方式自动部署应用程序的系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010823493.4A CN111949276B (zh) 2020-08-17 2020-08-17 一种基于容器方式自动部署应用程序的系统及方法

Publications (2)

Publication Number Publication Date
CN111949276A true CN111949276A (zh) 2020-11-17
CN111949276B CN111949276B (zh) 2024-02-06

Family

ID=73341991

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010823493.4A Active CN111949276B (zh) 2020-08-17 2020-08-17 一种基于容器方式自动部署应用程序的系统及方法

Country Status (1)

Country Link
CN (1) CN111949276B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112799692A (zh) * 2021-02-07 2021-05-14 的卢技术有限公司 一种基于docker技术的tomcat应用部署方法及应用
CN115809120A (zh) * 2023-02-22 2023-03-17 北京知其安科技有限公司 Docker容器的攻击模拟检测方法、系统、介质及电子设备
CN115828231A (zh) * 2022-10-28 2023-03-21 广州汽车集团股份有限公司 应用程序运行方法、装置、车辆以及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110265164A1 (en) * 2010-04-26 2011-10-27 Vmware, Inc. Cloud platform architecture
CN109656682A (zh) * 2018-12-03 2019-04-19 中国石油化工股份有限公司 一种基于容器技术的勘探开发大数据处理平台的系统和方法
CN110673858A (zh) * 2019-08-30 2020-01-10 四川新网银行股份有限公司 一种基于ssh免密登录协议的轻量级部署方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110265164A1 (en) * 2010-04-26 2011-10-27 Vmware, Inc. Cloud platform architecture
CN109656682A (zh) * 2018-12-03 2019-04-19 中国石油化工股份有限公司 一种基于容器技术的勘探开发大数据处理平台的系统和方法
CN110673858A (zh) * 2019-08-30 2020-01-10 四川新网银行股份有限公司 一种基于ssh免密登录协议的轻量级部署方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
于红雨;李燕;: "Windows平台的软件自动构建与发布技术研究", 成组技术与生产现代化, no. 02 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112799692A (zh) * 2021-02-07 2021-05-14 的卢技术有限公司 一种基于docker技术的tomcat应用部署方法及应用
CN115828231A (zh) * 2022-10-28 2023-03-21 广州汽车集团股份有限公司 应用程序运行方法、装置、车辆以及存储介质
CN115809120A (zh) * 2023-02-22 2023-03-17 北京知其安科技有限公司 Docker容器的攻击模拟检测方法、系统、介质及电子设备

Also Published As

Publication number Publication date
CN111949276B (zh) 2024-02-06

Similar Documents

Publication Publication Date Title
CN110572436B (zh) 多地跨集群的服务器部署方法及系统
JP7011737B2 (ja) コネクタ開発および統合チャネル展開のためのシステムおよび方法
US11294655B2 (en) Computer-automated software release and deployment architecture
US6854112B2 (en) System and method for the automatic installation and configuration of an operating system
US7512932B2 (en) Language and object model for describing MIDlets
US20040060035A1 (en) Automated method and system for building, deploying and installing software resources across multiple computer systems
US20060168575A1 (en) Defining a software deployment
US20040088397A1 (en) System and method for management of software applications
JP7231518B2 (ja) パッケージ化支援システムおよびパッケージ化支援方法
CN111949276A (zh) 一种基于容器方式自动部署应用程序的系统及方法
CN111666099A (zh) 一种应用服务发布系统
CN109460268B (zh) 应用参数配置方法、装置和系统
CN111708550A (zh) 应用部署方法、装置、计算机设备及存储介质
CN107465709B (zh) 分布式镜像构建任务方法及装置、系统
CN111367618A (zh) 基于docker的代码管理方法、系统、终端及介质
CN109684028B (zh) 一种操作系统与用户数据分离的方法、装置及设备
CN111913719B (zh) 高可用软件的部署方法、设备、装置和计算机存储介质
US20230239212A1 (en) Stable References for Network Function Life Cycle Management Automation
CN115357198B (zh) 存储卷的挂载方法及装置、存储介质及电子设备
CN108881338B (zh) 网络功能虚拟化镜像文件升级的方法及装置
CN113672334A (zh) 一种容器管理方法及装置
WO2020009014A1 (ja) 管理装置およびネットワーク管理方法
CN115344273B (zh) 一种基于货架系统来运行应用软件的方法及系统
CN113419743B (zh) 综合型应用脚本部署方法、装置、设备及存储介质
US20220229635A1 (en) Environment construction support system, apparatus, environment construction support method, and program

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