CN110888655A - 一种应用发布方法及装置 - Google Patents
一种应用发布方法及装置 Download PDFInfo
- Publication number
- CN110888655A CN110888655A CN201911111734.6A CN201911111734A CN110888655A CN 110888655 A CN110888655 A CN 110888655A CN 201911111734 A CN201911111734 A CN 201911111734A CN 110888655 A CN110888655 A CN 110888655A
- Authority
- CN
- China
- Prior art keywords
- container
- application
- file
- dockerfile
- configuring
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
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)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种应用发布方法及装置,首先在操作系统上安装并启动docker引擎,然后修改docker引擎的dockerfile文件,以使得docker引擎可以基于dockerfile文件构建容器并在构建的容器上部署应用,然后构建至少两个容器,并在构建的至少两个容器上分别部署一个不同的应用,实现至少两个应用的发布,根据配置好的IP地址及端口号访问所述至少两个容器上发布的两个应用。所述应用发布方法及装置,基于docker服务,将原本需要在服务器上安装的工具包、平台等文件,通过在dockerfile文件中的配置安装在容器中,根据需要可以构建多个容器,用于分别发布不同版本的应用。
Description
技术领域
本发明涉及软件测试技术,更具体的说,是涉及一种应用发布方法及装置。
背景技术
随着用户需求的不断增多,为用户提供服务的相关应用也需要不断的进行优化升级。在新的版本发布前,需要确定上一个版本中所有的bug是否都已经被修复,且新版本是否兼容旧版本。
若同一版本内的某些相互间无关联的应用同时需要修复bug,则可以在修复一部分bug后就发布以检验修复后的结果。由于每个版本的代码需要发布到一台服务器上,因此,若上述同一版本内的某些相互间无关联的应用同时需要修复bug的情况比较多,那么整个发布测试过程需要投入的服务器成本及时间成本将很大。
发明内容
有鉴于此,本发明提供如下技术方案:
一种应用发布方法,包括:
在操作系统上安装并启动docker引擎;
修改所述docker引擎的dockerfile文件,以使得所述docker引擎可以基于所述dockerfile文件构建容器并在构建的容器上部署应用;
基于所述dockerfile文件构建至少两个容器,并在所述至少两个容器上分别部署一个不同的应用,实现至少两个应用的发布;
根据配置好的IP地址及端口号访问所述至少两个容器上发布的所述至少两个应用。
可选的,所述修改所述docker引擎的dockerfile文件,包括:
将需要在服务器安装的文件的安装命令配置在所述dockerfile文件中;
配置用于生成容器的基础镜像;
配置维护者信息以及部署应用的命令信息。
可选的,所述基于所述dockerfile文件构建至少两个容器,并在所述至少两个容器上分别部署一个不同的应用,实现至少两个应用的发布,包括:
基于所述基础镜像以及自定义参数构建第一容器;
在所述第一容器上发布第一应用;
将所述第一容器作为创建第二容器的第二基础镜像,并基于所述第二基础镜像以及自定义参数构建第二容器;
在所述第二容器上发布第二应用。
可选的,所述修改所述docker引擎的dockerfile文件,包括:
在所述dockerfile文件中配置代码版本号、基础镜像的名称和作者信息;
在所述dockerfile文件中配置从服务器复制需求文件并配置到容器的指令;
在所述dockerfile文件中配置安装所述需求文件中的安装包的指令;
在所述dockerfile文件中将安装所述安装包时、所述安装包的路径配置到环境变量中;
在所述dockerfile文件中配置需要暴露的端口信息。
可选的,所述配置好的IP地址为用户设置的静态的虚拟IP地址,所述端口号为用户配置的需要暴露的端口的端口号。
一种应用发布装置,包括:
docker准备模块,用于在操作系统上安装并启动docker引擎;
文件修改模块,用于修改所述docker引擎的dockerfile文件,以使得所述docker引擎可以基于所述dockerfile文件构建容器并在构建的容器上部署应用;
应用发布模块,用于基于所述dockerfile文件构建至少两个容器,并在所述至少两个容器上分别部署一个不同的应用,实现至少两个应用的发布;
应用访问模块,用于根据配置好的IP地址及端口号访问所述至少两个容器上发布的所述至少两个应用。
可选的,所述文件修改模块包括:
第一配置模块,用于将需要在服务器安装的文件的安装命令配置在所述dockerfile文件中;
第二配置模块,用于配置用于生成容器的基础镜像;
第三配置模块,用于配置维护者信息以及部署应用的命令信息。
可选的,所述应用发布模块包括:
容器构建模块,用于基于所述基础镜像以及自定义参数构建第一容器;
应用发布子模块,用于在所述第一容器上发布第一应用;
所述容器构建模块还用于将所述第一容器作为创建第二容器的第二基础镜像,并基于所述第二基础镜像以及自定义参数构建第二容器;
所述应用发布子模块还用于在所述第二容器上发布第二应用。
可选的,所述文件修改模块具体可用于:
在所述dockerfile文件中配置代码版本号、基础镜像的名称和作者信息;
在所述dockerfile文件中配置从服务器复制需求文件并配置到容器的指令;
在所述dockerfile文件中配置安装所述需求文件中的安装包的指令;
在所述dockerfile文件中将安装所述安装包时、所述安装包的路径配置到环境变量中;
在所述dockerfile文件中配置需要暴露的端口信息。
可选的,所述配置好的IP地址为用户设置的静态的虚拟IP地址,所述端口号为用户配置的需要暴露的端口的端口号。
经由上述的技术方案可知,与现有技术相比,本发明实施例公开了一种应用发布方法及装置,首先在操作系统上安装并启动docker引擎,然后修改所述docker引擎的dockerfile文件,以使得所述docker引擎可以基于所述dockerfile文件构建容器并在构建的容器上部署应用,基于所述dockerfile文件构建至少两个容器,并在所述至少两个容器上分别部署一个不同的应用,实现至少两个应用的发布,根据配置好的IP地址及端口号访问所述至少两个容器上发布的所述至少两个应用。所述应用发布方法及装置,基于docker服务,将原本需要在服务器上安装的工具包、平台等文件,通过在dockerfile文件中的配置安装在容器中,根据需要可以以dockerfile文件为基础构建多个容器,用于分别发布不同版本的应用,从而实现在一台服务器上同时实现多个应用版本的发布测试。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例公开的一种应用发布方法的流程图;
图2为本发明实施例公开的修改dockerfile文件的流程图;
图3为本发明实施例公开的构建容器及部署应用的流程示意图;
图4为本申请公开的一种应用发布装置的结构示意图;
图5为本发明实施例公开的文件修改模块的结构示意图;
图6为本发明实施例公开的应用发布模块的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例公开的一种应用发布方法的流程图,参见图1所示,应用发布方法可以包括:
步骤101:在操作系统上安装并启动docker引擎。
在能够安装docker的操作系统上,首先安装好docker环境,然后启动docker服务。启动docker服务后可在其上运行多个容器,每一个容器中都可以部署一套应用,即发布一套代码。有此前提,后续通过相关文件的配置以及相关命令的执行,就可以实现多套应用或多个版本的代码部署在同一台服务器上,可以同时发布并访问不同的应用。
步骤102:修改所述docker引擎的dockerfile文件,以使得所述docker引擎可以基于所述dockerfile文件构建容器并在构建的容器上部署应用。
本实施例中,修改所述docker引擎的dockerfile文件的内容比较多,需要保证构建容器的基础配置都修改好,在下面的实施例中,将对修改所述docker引擎的dockerfile文件的具体内容做详细介绍。
此外,传统方式将jdk(JAVA语言的软件开发工具包)和jbossEAP(企业应用平台)安装包上传到服务器,通过执行一系列命令完成安装和修改指定文件中的参数,或者在指定文件中添加特定值的环境变量等的这些操作。本申请中,在docker服务中仍旧需要完成上述内容,只是安装的方式和路径与传统方式不尽相同。
传统的方式为在Linux服务器上安装了jdk和jbossEAP后,在/etc/profile中需要添加环境变量,在/etc/hosts中需要添加同一套环境中所有服务器的IP和对应机器名。
本申请是在jdk、jbossEAP的安装包或者需要的其他安装脚本已经上传到服务器(通过ADD和COPY命令实现)的基础上,将解压、安装jdk和jbossEAP的命令写在所述dockerfile文件中,将环境变量的名称写在dockerfile的ENV参数后,将容器中的路径和实际服务器路径做了关联,将应用程序需要暴露的端口写在dockerfile的EXPOSE参数后,并将容器指定具体名称,作为后续生成其他容器的基础镜像。
步骤102后,进入步骤103。
步骤103:基于所述dockerfile文件构建至少两个容器,并在所述至少两个容器上分别部署一个不同的应用,实现至少两个应用的发布。
通过步骤102在dockerfile文件中定义一个基础镜像的配置,通过docker build命令(即构建容器的命令)生成一个镜像,再通过docker run命令(即运行容器的命令)和自定义的参数创建出第一个自定义容器。第一个容器生成成功后,修改已经生成的第一个容器,具体可以是修改dockerfile文件中的内容,作为创建第二个自定义容器的基础镜像,然后配置其他的容器需要的参数,可以再次使用docker build命令创建第二个自定义容器;第三个或者更多的容器的生成方式与第二个自定义容器生成的方式相同。
构建好的容器上可以直接部署应用,本实施例中,至少构建了两个容器,两个容器上可以部署不同的应用。
步骤104:根据配置好的IP地址及端口号访问所述至少两个容器上发布的所述至少两个应用。
一般情况下,docker服务中创建的容器所分配到的IP都是自动获取的,一个或者多个容器启动后,容器间的IP都是顺序递增的,而且每次容器启动后的IP都可能会不同。
本实施例中,需要将构建的各个容器的IP设置为静态IP并且手动设置为指定的虚拟IP,保证指定的IP没有访问网络的限制,设置成功后通过访问绑定的IP和暴露的端口就可以访问应用。
因此,所述配置好的IP地址可以为用户设置的静态的虚拟IP地址;所述端口号为用户配置的需要暴露的端口的端口号。
本实施例中,所述应用发布方法,基于docker服务,将原本需要在服务器上安装的工具包、平台等文件,通过在dockerfile文件中的配置安装在容器中,根据需要可以以dockerfile文件为基础构建多个容器,用于分别发布不同版本的应用,从而实现在一台服务器上同时实现多个应用版本的发布测试。
上述实施例中,所述修改所述docker引擎的dockerfile文件的过程可以参见图2,图2为本发明实施例公开的修改dockerfile文件的流程图,参见图2所示,修改dockerfile文件可以包括:
步骤201:将需要在服务器安装的文件的安装命令配置在所述dockerfile文件中。
步骤202:配置用于生成容器的基础镜像。
步骤203:配置维护者信息以及部署应用的命令信息。
本实施例中,配置dockerfile文件需要在dockerfile文件中定义一个基础镜像的配置,即生成容器的基础镜像、维护者信息等,还需要将部署应用的其他步骤配置在所述dockerfile文件中。当然,本实施例中,并不对修改所述dockerfile文件的内容做具体限定,在实际应用中,根据情况可以确定需要配置哪些内容。
具体地,修改内容可以但不限制为包括:在所述dockerfile文件中配置代码版本号、基础镜像的名称和作者信息;在所述dockerfile文件中配置从服务器复制需求文件并配置到容器的指令;在所述dockerfile文件中配置安装所述需求文件中的安装包的指令;在所述dockerfile文件中将安装所述安装包时、所述安装包的路径配置到环境变量中;在所述dockerfile文件中配置需要暴露的端口信息。
在上述本发明公开的实施例的基础上,图3为本发明实施例公开的构建容器及部署应用的流程示意图,结合图3所示,所述基于所述dockerfile文件构建至少两个容器,并在所述至少两个容器上分别部署一个不同的应用,实现至少两个应用的发布,可以包括:
步骤301:基于所述基础镜像以及自定义参数构建第一容器。
步骤302:在所述第一容器上发布第一应用。
步骤303:将所述第一容器作为创建第二容器的第二基础镜像,并基于所述第二基础镜像以及自定义参数构建第二容器。
步骤304:在所述第二容器上发布第二应用。
当然,上述步骤中记载的在所述第一容器上发布了第一应用后,再构建第二容器,实际应用中,也可以是直接先构建好第一容器和第二容器,然后再分别在所述第一容器和所述第二容器上发布应用。由此,上述步骤顺序并不限制本申请公开技术方案的具体实施。
在一个具体的实施中,应用发布方法包括如下内容:
1、启动前的准备。
启动前准备可以包括根据操作系统版本,获取指定版本的操作系统镜像;创建dockerfile文件;获取jdk的安装包;在部署应用过程中,服务器上需要的指定文件上传到dockerfile文件所在的当前路径上;
2、修改dockerfile文件。
因为本专利是为了能在同一个服务器上实现部署不同版本的代码,所以在dockerfile最开始的位置,本专利添加了代码对应的版本号,之后建立新的镜像,只需要将此处的版本号做修改即可,例如:version 5.5。
本专利的实现是在RHEL7.4的基础上完成的,所以基础镜像的tag名称配置为操作系统的版本号:例如:FROMrhel:7.4。因为一台服务器上的操作系统安装之后版本就不会改变,所以此步骤内容可以作为固定模版,在创建新的容器时,无需修改。
根据配置作者信息的位置。当完成一个版本代码发布后,下一个基础镜像和容器可能由另一个人来创建,所以在MAINTAINER处,本专利是根据实际创建的作者来完成此处的配置,例如:MAINTAINER zhangxf<xfzhang16@travelsky.com>。
容器相当于一个迷你版的操作系统,在航空结算系统代码的部署中,需要有jkd,jbossEAP和发布过程中需要读取服务器上的指定配置文件作为基础,其中jkd和jbossEAP安装完成之后还需要配置环境变量。当所有的操作即将jdk,jbossEAP和配置文件上传到dockerfile文件所在的当前路径上之后,对应的需要在dockerfile文件上添加从服务器复制如上安装包和配置到容器中的命令,如下:
ADD jdk-8u181-linux-x64.tar.gz/opt/jdk/
COPY 10.1.15.183.jks/nbs/BSP-DATA/71UPGRADE/KEY/
COPY jboss-eap-7.1/usr/app/jboss-eap-7.1/。
因为每套代码对应的jbossEAP的配置是相同的,所以此步骤可以作为固定模版,在创建新的容器时,无需修改。
在容器中完成安装jdk和jbossEAP。在上述完成了复制的操作后,只需要在dockerfile文件中添加安装jdk,jbossEAP的命令,修改jbossEAP安装包下所有文件权限和所有子目录下每个文件的用户和属组的命令,如下:
RUN rm-rf/opt/jdk/jdk-8u181-linux-x64.tar.gz\
&&mkdir-p/nbs/BSP-DATA/71upgrade/log/exe2\
&&cd/usr/app/\
&&useradd jboss\
&&chown-fR jboss:jboss jboss-eap-7.1/\
&&chmod-fR 775jboss-eap-7.1/
因为修改安装包的用户和属主步骤是相同的,所以在创建新的容器时,只需要将“/nbs/BSP-DATA/71upgrade/log/exe2\”改为新的日志路径即可,其他命令可作为模版使用。
在完成安装和修改权限后,需要将安装过程中jdk和jbossEAP的路径添加到环境变量中,如下:
ENV JAVA_HOME=/opt/jdk/jdk1.8.0_181CLASSPATH=.:$JAVA_HOME/bin.tools.jar
PATH=$JAVA_HOME/bin:$PATH JBOSS_HOME=/usr/app/jboss-eap-7.1PATH=$JBOSS_HOME/bin:$PATH。
在测试航空结算系统的代码过程中,虽然代码的版本不同,但是jdk和jbossEAP的版本是相同的,所以此步骤中的JAVA_HOME,CLASSPATH和JBOSS_HOME无需修改,即可作为创建新容器的模版。
在安装完成之后,如果要访问应用,除了需要IP之外,还需要访问指定的端口号,此步骤只需要将需要暴露的端口写出来,如下:EXPOSE 8080 9990。
因为虽然代码的版本不同,但是访问应用的端口号是相同的,所以在dockerfile文件中,此步骤可以作为创建新容器的模版使用。
3、创建镜像。
在检验docker安装成功之后,只需要执行如下命令修改镜像的tag名称为操作系统的版本号即可,如docker tag ID rhel:7.4。
在dockerfile文件所在的路径下执行如下命令后即可创建镜像,如dockerbuild-t web:test。
航空结算系统是将web,schedule和execution的应用分别部署,所以此命令可以作为模版使用,只需根据具体的情况,将上述的web改为对应名称即可。test为tag名称,可自定义命名,tag名称完成后,也可以作为模版使用,且后续无需修改。
4、创建并启动容器。
例如,可执行如下命令完成容器的启动
docker run--net=host--name=web--rm-v/ibspsat/appdata/78NEW/LOG/WEB1:/ibspsat/appdata/78NEW/LOG/WEB1
web:test/usr/app/jboss-eap-7.1/bin/standalone.sh-b 10.1.19.166-bmanagement 10.1.19.166-c standalone.xml
其中”web”是根据实际应用做调整,改为schedule或execution;”/ibspsat/appdata/78NEW/LOG/WEB1”是自定义日志路径,根据部署的不同版本代码,修改日志的实际输出路径;10.1.19.166为当前服务器的IP,根据修改的IP修改即可;“standalone.sh”为jbossEAP的启动文件,无需修改;
此步骤结构是固定的,只需要在部署脚本中将此步骤命令修改个性化参数即可使用。
5、指定各个容器IP。
进入容器后,执行如下命令进入/etc/sysconfig/network-scripts路径
#cd/etc/sysconfig/network-scripts
通过执行如下命令,编辑其中的BOOTPROTO的值,改为static。
#vim-ifcfg-ens33。
并在文件最下方添加如下内容,其中IPADDR值为运行部门提供的虚拟IP地址。
DNS1=114.114.114.114
IPADDR=192.168.157.131
NETMASK=255.255.255.0
GATEWAY=192.168.157.2
在容器中修改保存后,当服务启动后,直接通过此处修改的IPADDR的值和端口号就可以访问应用。
通过本申请公开的上述内容,能够帮助用户在代码版本过多时,使用最少的服务器资源,将不同版本的代码同时发布到服务器上,能够同时测试不同版本代码的功能差异。在实际场景中,每次企业在开发过程中的软件项目比之以前的功能都会有部分升级或者修复之前的某些bug,而修复bug之前则首先需要复现问题从而针对问题建立解决方案。随着版本的增多,对于部署应用来说意味着需要更多数量的服务器资源,能够快速部署应用的同时从而使用最少数量的服务器资源,为企业减少不必要的资源消耗。并在已有服务器配置的基础上,只需修改部分个性化参数,就可以实现新版本代码的快速发布。
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
上述本发明公开的实施例中详细描述了方法,对于本发明的方法可采用多种形式的装置实现,因此本发明还公开了一种装置,下面给出具体的实施例进行详细说明。
图4为本申请公开的一种应用发布装置的结构示意图,参见图4所示,应用发布装置40可以包括:
docker准备模块401,用于在操作系统上安装并启动docker引擎。
在能够安装docker的操作系统上,首先安装好docker环境,然后启动docker服务。启动docker服务后可在其上运行多个容器,每一个容器中都可以部署一套应用,即发布一套代码。有此前提,后续通过相关文件的配置以及相关命令的执行,就可以实现多套应用或多个版本的代码部署在同一台服务器上,可以同时发布并访问不同的应用。
文件修改模块402,用于修改所述docker引擎的dockerfile文件,以使得所述docker引擎可以基于所述dockerfile文件构建容器并在构建的容器上部署应用。
本实施例中,修改所述docker引擎的dockerfile文件的内容比较多,需要保证构建容器的基础配置都修改好。
本申请在jdk、jbossEAP的安装包或者需要的其他安装脚本已经上传到服务器的基础上,可以将解压、安装jdk和jbossEAP的命令写在所述dockerfile文件中,将环境变量的名称写在dockerfile的ENV参数后,将容器中的路径和实际服务器路径做了关联,将应用程序需要暴露的端口写在dockerfile的EXPOSE参数后,并将容器指定具体名称,作为后续生成其他容器的基础镜像。
应用发布模块403,用于基于所述dockerfile文件构建至少两个容器,并在所述至少两个容器上分别部署一个不同的应用,实现至少两个应用的发布。
在dockerfile文件中定义一个基础镜像的配置后,通过docker build命令生成一个镜像,再通过docker run命令和自定义的参数创建出第一个自定义容器。第一个容器生成成功后,修改已经生成的第一个容器,具体可以是修改dockerfile文件中的内容,作为创建第二个自定义容器的基础镜像,然后配置其他的容器需要的参数,可以再次使用dockerbuild命令创建第二个自定义容器;第三个或者更多的容器的生成方式与第二个自定义容器生成的方式相同。
构建好的容器上可以直接部署应用,本实施例中,至少构建了两个容器,两个容器上可以部署不同的应用。
应用访问模块404,用于根据配置好的IP地址及端口号访问所述至少两个容器上发布的所述至少两个应用。
本实施例中,需要将构建的各个容器的IP设置为静态IP并且手动设置为指定的虚拟IP,保证指定的IP没有访问网络的限制,设置成功后通过访问绑定的IP和暴露的端口就可以访问应用。
因此,所述配置好的IP地址可以为用户设置的静态的虚拟IP地址;所述端口号为用户配置的需要暴露的端口的端口号。
本实施例中,所述应用发布装置,基于docker服务,将原本需要在服务器上安装的工具包、平台等文件,通过在dockerfile文件中的配置安装在容器中,根据需要可以以dockerfile文件为基础构建多个容器,用于分别发布不同版本的应用,从而实现在一台服务器上同时实现多个应用版本的发布测试。
图5为本发明实施例公开的文件修改模块的结构示意图,参见图5所示,文件修改模块402可以包括:
第一配置模块501,用于将需要在服务器安装的文件的安装命令配置在所述dockerfile文件中。
第二配置模块502,用于配置用于生成容器的基础镜像。
第三配置模块503,用于配置维护者信息以及部署应用的命令信息。
本实施例中,配置dockerfile文件需要在dockerfile文件中定义一个基础镜像的配置,即生成容器的基础镜像、维护者信息等,还需要将部署应用的其他步骤配置在所述dockerfile文件中。当然,本实施例中,并不对修改所述dockerfile文件的内容做具体限定,在实际应用中,根据情况可以确定需要配置哪些内容。
具体地,修改内容可以但不限制为包括:在所述dockerfile文件中配置代码版本号、基础镜像的名称和作者信息;在所述dockerfile文件中配置从服务器复制需求文件并配置到容器的指令;在所述dockerfile文件中配置安装所述需求文件中的安装包的指令;在所述dockerfile文件中将安装所述安装包时、所述安装包的路径配置到环境变量中;在所述dockerfile文件中配置需要暴露的端口信息。
在上述本发明公开的实施例的基础上,图6为本发明实施例公开的应用发布模块的结构示意图,结合图6所示,应用发布模块403可以包括:
容器构建模块601,用于基于所述基础镜像以及自定义参数构建第一容器。
应用发布子模块602,用于在所述第一容器上发布第一应用。
所述容器构建模块601还用于将所述第一容器作为创建第二容器的第二基础镜像,并基于所述第二基础镜像以及自定义参数构建第二容器。
所述应用发布子模块602还用于在所述第二容器上发布第二应用。
通过本申请公开的上述内容,能够帮助用户在代码版本过多时,使用最少的服务器资源,将不同版本的代码同时发布到服务器上,能够同时测试不同版本代码的功能差异。在实际场景中,每次企业在开发过程中的软件项目比之以前的功能都会有部分升级或者修复之前的某些bug,而修复bug之前则首先需要复现问题从而针对问题建立解决方案。随着版本的增多,对于部署应用来说意味着需要更多数量的服务器资源,能够快速部署应用的同时从而使用最少数量的服务器资源,为企业减少不必要的资源消耗。并在已有服务器配置的基础上,只需修改部分个性化参数,就可以实现新版本代码的快速发布。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种应用发布方法,其特征在于,包括:
在操作系统上安装并启动docker引擎;
修改所述docker引擎的dockerfile文件,以使得所述docker引擎可以基于所述dockerfile文件构建容器并在构建的容器上部署应用;
基于所述dockerfile文件构建至少两个容器,并在所述至少两个容器上分别部署一个不同的应用,实现至少两个应用的发布;
根据配置好的IP地址及端口号访问所述至少两个容器上发布的所述至少两个应用。
2.根据权利要求1所述的应用发布方法,其特征在于,所述修改所述docker引擎的dockerfile文件,包括:
将需要在服务器安装的文件的安装命令配置在所述dockerfile文件中;
配置用于生成容器的基础镜像;
配置维护者信息以及部署应用的命令信息。
3.根据权利要求2所述的应用发布方法,其特征在于,所述基于所述dockerfile文件构建至少两个容器,并在所述至少两个容器上分别部署一个不同的应用,实现至少两个应用的发布,包括:
基于所述基础镜像以及自定义参数构建第一容器;
在所述第一容器上发布第一应用;
将所述第一容器作为创建第二容器的第二基础镜像,并基于所述第二基础镜像以及自定义参数构建第二容器;
在所述第二容器上发布第二应用。
4.根据权利要求1所述的应用发布方法,其特征在于,所述修改所述docker引擎的dockerfile文件,包括:
在所述dockerfile文件中配置代码版本号、基础镜像的名称和作者信息;
在所述dockerfile文件中配置从服务器复制需求文件并配置到容器的指令;
在所述dockerfile文件中配置安装所述需求文件中的安装包的指令;
在所述dockerfile文件中将安装所述安装包时、所述安装包的路径配置到环境变量中;
在所述dockerfile文件中配置需要暴露的端口信息。
5.根据权利要求1所述的应用发布方法,其特征在于,所述配置好的IP地址为用户设置的静态的虚拟IP地址,所述端口号为用户配置的需要暴露的端口的端口号。
6.一种应用发布装置,其特征在于,包括:
docker准备模块,用于在操作系统上安装并启动docker引擎;
文件修改模块,用于修改所述docker引擎的dockerfile文件,以使得所述docker引擎可以基于所述dockerfile文件构建容器并在构建的容器上部署应用;
应用发布模块,用于基于所述dockerfile文件构建至少两个容器,并在所述至少两个容器上分别部署一个不同的应用,实现至少两个应用的发布;
应用访问模块,用于根据配置好的IP地址及端口号访问所述至少两个容器上发布的所述至少两个应用。
7.根据权利要求6所述的应用发布装置,其特征在于,所述文件修改模块包括:
第一配置模块,用于将需要在服务器安装的文件的安装命令配置在所述dockerfile文件中;
第二配置模块,用于配置用于生成容器的基础镜像;
第三配置模块,用于配置维护者信息以及部署应用的命令信息。
8.根据权利要求7所述的应用发布方法,其特征在于,所述应用发布模块包括:
容器构建模块,用于基于所述基础镜像以及自定义参数构建第一容器;
应用发布子模块,用于在所述第一容器上发布第一应用;
所述容器构建模块还用于将所述第一容器作为创建第二容器的第二基础镜像,并基于所述第二基础镜像以及自定义参数构建第二容器;
所述应用发布子模块还用于在所述第二容器上发布第二应用。
9.根据权利要求6所述的应用发布装置,其特征在于,所述文件修改模块具体可用于:
在所述dockerfile文件中配置代码版本号、基础镜像的名称和作者信息;
在所述dockerfile文件中配置从服务器复制需求文件并配置到容器的指令;
在所述dockerfile文件中配置安装所述需求文件中的安装包的指令;
在所述dockerfile文件中将安装所述安装包时、所述安装包的路径配置到环境变量中;
在所述dockerfile文件中配置需要暴露的端口信息。
10.根据权利要求6所述的应用发布装置,其特征在于,所述配置好的IP地址为用户设置的静态的虚拟IP地址,所述端口号为用户配置的需要暴露的端口的端口号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911111734.6A CN110888655A (zh) | 2019-11-14 | 2019-11-14 | 一种应用发布方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911111734.6A CN110888655A (zh) | 2019-11-14 | 2019-11-14 | 一种应用发布方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110888655A true CN110888655A (zh) | 2020-03-17 |
Family
ID=69747452
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911111734.6A Pending CN110888655A (zh) | 2019-11-14 | 2019-11-14 | 一种应用发布方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110888655A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111596928A (zh) * | 2020-05-19 | 2020-08-28 | 吉林大学 | 一种应用控制方法、装置及电子设备 |
CN111880893A (zh) * | 2020-06-21 | 2020-11-03 | 苏州浪潮智能科技有限公司 | 一种容器镜像快速转换方法与系统 |
CN112181588A (zh) * | 2020-09-18 | 2021-01-05 | 济南浪潮数据技术有限公司 | 一种应用容器化方法、装置及电子设备和存储介质 |
CN113032094A (zh) * | 2021-03-08 | 2021-06-25 | 万翼科技有限公司 | 一种cad容器化方法、装置及电子设备 |
CN114721784A (zh) * | 2022-05-19 | 2022-07-08 | 龙芯中科技术股份有限公司 | 应用运行方法、装置、电子设备及可读介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106649083A (zh) * | 2016-09-05 | 2017-05-10 | 中国农业银行股份有限公司 | 应用灰度发布方法及设备、应用访问方法及设备 |
CN107395762A (zh) * | 2017-08-30 | 2017-11-24 | 四川长虹电器股份有限公司 | 一种基于Docker容器的应用服务访问系统及方法 |
CN107678756A (zh) * | 2017-09-29 | 2018-02-09 | 千寻位置网络有限公司 | 一种基于Docker的Web应用一键发布方法 |
US20180349150A1 (en) * | 2017-06-05 | 2018-12-06 | International Business Machines Corporation | Facilitating multi-inheritance within a single inheritance container-based environment |
CN109324819A (zh) * | 2018-09-28 | 2019-02-12 | 中国平安财产保险股份有限公司 | 服务器代码部署方法、装置、服务器设备及存储介质 |
CN109471658A (zh) * | 2018-11-19 | 2019-03-15 | 四川长虹电器股份有限公司 | 一种基于容器的快速搭建靶机环境的方法 |
CN109739616A (zh) * | 2018-12-05 | 2019-05-10 | 国云科技股份有限公司 | 一种云平台容器镜像批量制作方法 |
CN110020060A (zh) * | 2018-07-18 | 2019-07-16 | 平安科技(深圳)有限公司 | 网页数据爬取方法、装置及存储介质 |
-
2019
- 2019-11-14 CN CN201911111734.6A patent/CN110888655A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106649083A (zh) * | 2016-09-05 | 2017-05-10 | 中国农业银行股份有限公司 | 应用灰度发布方法及设备、应用访问方法及设备 |
US20180349150A1 (en) * | 2017-06-05 | 2018-12-06 | International Business Machines Corporation | Facilitating multi-inheritance within a single inheritance container-based environment |
CN107395762A (zh) * | 2017-08-30 | 2017-11-24 | 四川长虹电器股份有限公司 | 一种基于Docker容器的应用服务访问系统及方法 |
CN107678756A (zh) * | 2017-09-29 | 2018-02-09 | 千寻位置网络有限公司 | 一种基于Docker的Web应用一键发布方法 |
CN110020060A (zh) * | 2018-07-18 | 2019-07-16 | 平安科技(深圳)有限公司 | 网页数据爬取方法、装置及存储介质 |
CN109324819A (zh) * | 2018-09-28 | 2019-02-12 | 中国平安财产保险股份有限公司 | 服务器代码部署方法、装置、服务器设备及存储介质 |
CN109471658A (zh) * | 2018-11-19 | 2019-03-15 | 四川长虹电器股份有限公司 | 一种基于容器的快速搭建靶机环境的方法 |
CN109739616A (zh) * | 2018-12-05 | 2019-05-10 | 国云科技股份有限公司 | 一种云平台容器镜像批量制作方法 |
Non-Patent Citations (1)
Title |
---|
维克托•法西克, 华中科技大学出版社 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111596928A (zh) * | 2020-05-19 | 2020-08-28 | 吉林大学 | 一种应用控制方法、装置及电子设备 |
CN111596928B (zh) * | 2020-05-19 | 2021-08-13 | 吉林大学 | 一种应用控制方法、装置及电子设备 |
CN111880893A (zh) * | 2020-06-21 | 2020-11-03 | 苏州浪潮智能科技有限公司 | 一种容器镜像快速转换方法与系统 |
CN111880893B (zh) * | 2020-06-21 | 2023-01-06 | 苏州浪潮智能科技有限公司 | 一种容器镜像快速转换方法与系统 |
CN112181588A (zh) * | 2020-09-18 | 2021-01-05 | 济南浪潮数据技术有限公司 | 一种应用容器化方法、装置及电子设备和存储介质 |
CN113032094A (zh) * | 2021-03-08 | 2021-06-25 | 万翼科技有限公司 | 一种cad容器化方法、装置及电子设备 |
CN114721784A (zh) * | 2022-05-19 | 2022-07-08 | 龙芯中科技术股份有限公司 | 应用运行方法、装置、电子设备及可读介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110888655A (zh) | 一种应用发布方法及装置 | |
US9760343B2 (en) | Application builder based on metadata | |
US9342273B1 (en) | Automatic communications graphing for a source application | |
US9959108B2 (en) | Fast deployment across cloud platforms | |
US9367305B1 (en) | Automatic container definition | |
US8533676B2 (en) | Single development test environment | |
EP2932374B1 (en) | Systems, methods, and computer program products for a software build and load process using a compilation and deployment service | |
CN110727440B (zh) | 一种软件封装方法 | |
US8997078B2 (en) | Release lifecycle management system for a multi-node application | |
US8745585B2 (en) | Meta-data for single development test environment | |
US20130174124A1 (en) | Version numbering in single development and test environment | |
US20080127093A1 (en) | Server testing framework | |
CN102541609B (zh) | 安装程序制作方法、装置及网络设备 | |
AU2012201749B2 (en) | Single development test environment | |
CN111506322A (zh) | 一种自动化集成构建开发部署平台及方法 | |
CN110908670A (zh) | 一种自动发布服务的方法及装置 | |
CN115248700A (zh) | 一种产品代码自动化构建移动安装包的方法和系统 | |
CN113254054B (zh) | 一种智能合约一站式开发系统及方法 | |
Talwar et al. | Comparison of approaches to service deployment | |
CN109710281A (zh) | 大数据平台的安装方法及装置 | |
CN114546819A (zh) | 代码处理方法、装置、电子设备及可读介质 | |
CN115525545A (zh) | 一种基于Docker的自动化测试方法、系统、设备及介质 | |
CN116185432A (zh) | 一种Kubeedge边缘计算框架离线自动化部署方法 | |
EP2503450A2 (en) | Version numbering in single development and test environment | |
CN113760442A (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 |