一种面向云件PaaS平台的云件镜像制作方法与系统

著录项
  • CN201810793955.5
  • 20180719
  • CN109408069A
  • 20190301
  • 中国矿业大学
  • 丁世飞;杜鹏;张昊天
  • G06F8/61
  • G06F8/61 G06F9/455

  • 江苏省徐州市大学路1号中国矿业大学南湖校区
  • 江苏(32)
摘要
本发明一种面向云件PaaS平台的云件镜像制作方法与系统,主要实现了构建镜像,生成镜像JSON信息文件,上传镜像三个功能部分,完成了一个云件镜像从构建到部署的全过程实现。步骤1,选择云件镜像构建的交互界面;步骤2,选择云件镜像构建模式;步骤3,输入选择的镜像构建模式对应的参数;步骤4,构建云件镜像;步骤5,输出镜像构建日志及结果;步骤6,输入描述云件镜像的信息;步骤7,生成描述镜像的JSON文件;步骤8,打包将要上传的镜像;步骤9,镜像上传;步骤10,输出镜像上传日志及结果。为Windows和Linux这两种操作系统的云件开发者提供了图形化和命令行形式的镜像构建系统,并为云件开发者提供了及时的信息反馈和良好的可靠性保证。统一了云件开发者的镜像构建过程与镜像标准,同时为云件开发者提供了云件镜像交付的标准方法。
权利要求

1.一种面向云件PaaS平台的云件镜像制作方法与系统,主要包括:

步骤1:选择云件镜像构建的交互界面;

用户选择使用命令行交互界面或使用图形化交互界面。

步骤2:选择云件镜像构建模式;

本发明提供两种云件镜像构建模式,build模式和commit模式。build模式将实现基于一个镜像和指定命令的Dockerfile文件来构建一个新的镜像;commit模式将实现根据当前运行的Docker容器打包制作成云件镜像。

步骤3:输入选择的镜像构建模式对应的参数;

若选择build模式,则输入Dockerfile文件的路径;若选择commit模式,则输入将制作成镜像的Docker容器的ID。

步骤4:构建云件镜像;

本发明提供了完整的云件镜像构建模块。

步骤5:输出镜像构建日志及结果;

步骤6:输入描述云件镜像的信息;

本发明支持的云件镜像信息包括:镜像名称,版本,许可,镜像类型,最小系统需求,按时计费,图标,Git仓库,主页,作者,描述等。

步骤7:生成描述镜像的JSON文件;

步骤8:打包将要上传的镜像;

输入将上传镜像的ID,并选择镜像包的输出目录。本发明提供的云件镜像制作工具将完成镜像的打包工作。

步骤9:镜像上传;

输入镜像仓库服务商域名,用户名,密码,Email和仓库名称,输入镜像ID和镜像标签,执行上传。

步骤10:输出镜像上传日志及结果。

3.根据权利要求1所述一种面向云件PaaS平台的云件镜像制作方法与系统其特征在于,步骤1中,在Ubuntu下,本系统使用命令行作为交互方式;在Windows下,本系统设计一套图形界面作为与用户交互的形式。

(1)命令行

为了实现该程序的主要功能,本系统提供了一套参数可供进行不同的处理。设置默认运行时并配置环境变量,使本系统可以全局运行。将本系统命名为CWBuilder。

本发明提供了两条主要的参数作为命令入口:CWBuilder commit和CWBuilder build。

同时本系统也提供该程序的帮助参数-h,--help。最终CWBuilder程序的入口界面即为:

CWBuilder [command] [options]

(2)图形界面

在windows操作系统下,本系统为云件开发者设计并实现了图形界面程序,使用户可以更加直观清晰的掌握镜像制作的各项流程和步骤。

主界面设计简洁,突出三个功能的按钮,单击按钮便可以在主界面的窗口中刷新出每一个功能的操作界面。三个按钮分别是:镜像构建,生成JSON,镜像上传。

其中在镜像构建的窗口中,包含了采用CWBuilder build模式构建镜像和采用CWBuilder commit模式构建镜像。其中CWBuilder build模式提供了选择Dockerfile目录的按钮,CWBuilder commit模式提供了容器ID的输入界面。

在生成JSON的窗口中,单击开始创建按钮将启动引导输入JSON对象的属性值的向导。该向导包含了五个向导页。依次输入各项属性值,在最后一个向导页会显示完整的JSON对象,如果有需要修改的地方,直接在其中修改即可。单击完成即可在选定目录下生成描述镜像的package.json文件。

在镜像上传窗口中,该工具提供了镜像打包和上传两个按钮。需要首先执行镜像打包,输入打包镜像的ID,选择输出镜像包的目录,完成之后进行镜像打包。镜像打包完成后,执行上传,在弹出的向导页中,依次输入镜像仓库的登录信息和改镜像的标签信息,最终执行上传,即可把镜像上传至指定的镜像仓库中。

4.根据权利要求1所述一种面向云件PaaS平台的云件镜像制作方法与系统其特征在于,步骤2中,本系统提供了两种云件镜像构建模式。一种是基于当前运行中的容器构建成镜像,对应的命令是CWBuilder commit;另一种是基于一个已存在的镜像对其进行需要的操作后构建成镜像,对应的命令是CWBuilder build。

5.根据权利要求1所述一种面向云件PaaS平台的云件镜像制作方法与系统其特征在于,步骤5中,当镜像构建成功后,将会使用cmd函数重定向输出流,以图形化窗口的形式显示镜像构建的日志与结果。在命令行的交互模式中,本系统将直接在命令行中显示镜像构建的输出结果。

6.根据权利要求1所述一种面向云件PaaS平台的云件镜像制作方法与系统其特征在于,步骤6与7中,除了在镜像创建过程中生成的json镜像信息文件之外,还需要额外的属性信息来描述云件镜像。这是因为云件PaaS平台会根据这些属性信息来分配给这个云件的资源,并为此云件的运行进行按需计费。因此本系统需要提供支持云件PaaS平台的json文件。命令行交互方式中,本系统负责处理镜像信息输入并生成json文件的代码是init-package-json.js,负责获取需要输入的属性及处理值的输入,写入至最终的package.json文件中。在图形界面交互方式中,windows2窗口用来创建该json文件。点击开始创建将弹出向导页。

本系统建立了一个JsonClass类专门存储所要生成的JSON对象。JsonClass类中包含三个成员:存储属性名称的property字符串数组,存储属性值的value字符串数组,和用来存储图标信息的icon字符串数组。property数组中存放属性。value数组中,除了有默认值的属性外,其余属性的值初始化为空,所有的属性值都可以通过在向导中的输入而重新赋值。

7.根据权利要求1所述一种面向云件PaaS平台的云件镜像制作方法与系统其特征在于,步骤8中,在图形化界面中,输入将上传镜像的ID,并选择镜像包的输出目录。

8.根据权利要求1所述一种面向云件PaaS平台的云件镜像制作方法与系统其特征在于,步骤9中,在镜像成功构建和镜像信息文件成功生成之后,本系统将进行镜像上传的工作。需要配置好指定的用户名以及镜像仓库路径。使用文件registryName存放镜像仓库路径。

在进行镜像上传工作时,本系统首先进行镜像仓库的登录。之后本系统执行CWBuildertag命令给该镜像加上标签。最后只需要执行CWBuilder push,参数是registryURL。

9.根据权利要求1所述一种面向云件PaaS平台的云件镜像制作方法与系统其特征在于,步骤10中,等镜像上传成功后,镜像仓库会自动返回上传成功的提示信息。截取输出流和错误流,将输出信息打印到窗口中,供用户查阅。

2.本发明一种面向云件PaaS平台的云件镜像制作方法与系统其特征在于,本云件镜像制作系统实现了构建镜像,生成镜像JSON信息文件,上传镜像三个功能部分,完成了一个云件镜像从构建到部署的全过程实现。大大简化并统一了云件开发者的镜像构建过程,同时方便云件开发者交付云件镜像。为Windows和Linux这两种操作系统的云件开发者提供了图形化和命令行形式的镜像构建系统。提供了两种镜像构建模式供用户灵活使用,满足不同情况的镜像构建需求。为用户提供了及时的信息反馈和良好的可靠性保证。

说明书
技术领域

本发明一种面向云件PaaS平台的云件镜像制作方法与系统,主要实现了构建镜像,生成镜像JSON信息文件,上传镜像三个功能部分,完成了一个云件镜像从构建到部署的全过程实现。为Windows和Linux这两种操作系统的云件开发者提供了图形化和命令行形式的镜像构建系统,并为云件开发者提供了及时的信息反馈和良好的可靠性保证。统一了云件开发者的镜像构建过程与镜像标准,同时为云件开发者提供了云件镜像交付的标准方法。

随着云计算的发展,出现了可以在浏览器内运行软件的平台。使用这样的云计算平台,用户只需要一个基本的交互设备,打开浏览器访问此云计算平台,就可以随时随地运行本应在专业工作站上运行的软件,完成高质量的工作。云件PaaS平台就是此类云计算平台。云件可以理解为云端软件。云件是一种云端计算、终端交互的软件形态,软件运行在云端环境中,输出的交互界面全部通过互联网实时传输到终端,终端的输入通过互联网实时传至云端。云件PaaS平台将一个软件运行的所有任务,包括计算、存储等,全部移上了云端,用户可以在自己的电脑上打开浏览器访问云件平台,就可以使用云件平台提供的所有软件功能,而不需要在本地安装这些软件。云件PaaS平台实现了传统软件云端化的过程。

同时,云件PaaS平台作为一个云计算PaaS平台的典型代表,遵循“平台即服务”的理念,是一个可供软件开发者提交自己的软件使其云端运行的平台。软件开发者在自己的电脑上完成软件的开发工作,然后需要把开发好的软件部署到云件PaaS平台之上,才可供用户使用。这个部署流程需要把软件转换成云件,才能在云件PaaS平台上运行。云件的部署面向服务,是以服务发布的形式完成的。而事实上,一个云件的部署实际上是微服务的部署。一个个微服务构件既可以单独部署,也可以集成部署。Docker是一种流行的轻量级虚拟化方案,因此云件PaaS平台选取Docker作为虚拟化平台。那么云件部署在操作上最终以Docker容器的方式进行部署。云件的运行需要云件文件的支持,只有这样才可以在Docker容器中启动运行。因此,为了在云件PaaS平台上部署云件应用,需要到一种快速的、可集成的方式。这种方式就是使云件在Docker容器上运行,提供文件系统的云件镜像。云件镜像便是可快速部署云件应用的解决方案。

由于不同的开发者开发的云件的功能不同,不同的云件在制作、部署及发布方面,存在较大的差异性,这会给云件开发者造成困惑,云件PaaS平台也难以统一部署及运行不同的云件。同时,云件镜像的构建及发布涉及到不同平台,传统的云件镜像制作及发布方法操作繁琐。

为了解决云件开发者提供的软件能在云件PaaS平台上运行并快速部署的需求,本发明提供了一种面向云件PaaS平台的云件镜像制作方法与系统,使得云件开发者提供的软件满足云件PaaS平台所使用的容器镜像要求,并将制作的镜像上传至云件PaaS平台的镜像仓库中,使得云件开发者开发的云件能够顺利在平台上运行。

本发明一种向云件PaaS平台的云件镜像制作系统,主要步骤如下:

步骤1:选择云件镜像构建的交互界面

用户选择使用命令行交互界面或使用图形化交互界面。

步骤2:选择云件镜像构建模式

本发明提供两种云件镜像构建模式,build模式和commit模式。build模式将实现基于一个镜像和指定命令的Dockerfile文件来构建一个新的镜像;commit模式将实现根据当前运行的Docker容器打包制作成云件镜像。

步骤3:输入选择的镜像构建模式对应的参数

若选择build模式,则输入Dockerfile文件的路径;若选择commit模式,则输入将制作成镜像的Docker容器的ID。

步骤4:构建云件镜像

本发明提供了完整的云件镜像构建模块。

步骤5:输出镜像构建日志及结果

步骤6:输入描述云件镜像的信息

本发明支持的云件镜像信息包括:镜像名称,版本,许可,镜像类型,最小系统需求,按时计费,图标,Git仓库,主页,作者,描述等。

步骤7:生成描述镜像的JSON文件

步骤8:打包将要上传的镜像

输入将上传镜像的ID,并选择镜像包的输出目录。本发明提供的云件镜像制作工具将完成镜像的打包工作。

步骤9:镜像上传

输入镜像仓库服务商域名,用户名,密码,Email和仓库名称,输入镜像ID和镜像标签,执行上传。

步骤10:输出镜像上传日志及结果

本发明具有如下优点及效果:

(1)本云件镜像制作系统实现了构建镜像,生成镜像JSON信息文件,上传镜像三个功能部分,完成了一个云件镜像从构建到部署的全过程实现。大大简化并统一了云件开发者的镜像构建过程,同时方便云件开发者交付云件镜像。

(2)为Windows和Linux这两种操作系统的云件开发者提供了图形化和命令行形式的镜像构建系统。提供了两种镜像构建模式供用户灵活使用,满足不同情况的镜像构建需求。

(3)为用户提供了及时的信息反馈和良好的可靠性保证。

附图1为本发明一种面向云件PaaS平台的云件镜像制作方法与系统用例图。

附图2为本发明一种面向云件PaaS平台的云件镜像制作方法与系统的主要功能流程图。

附图3为本发明一种面向云件PaaS平台的云件镜像制作方法与系统中的镜像构建模块的流程图。

附图4为本发明一种面向云件PaaS平台的云件镜像制作方法与系统中的CWBuilder build 流程图。

附图5为本发明一种面向云件PaaS平台的云件镜像制作方法与系统中的镜像上传模块的流程图。

附图6为本发明一种面向云件PaaS平台的云件镜像制作方法与系统中的命令行交互界面的示意图。

附图7为本发明一种面向云件PaaS平台的云件镜像制作方法与系统主界面示意图。

附图8为本发明一种面向云件PaaS平台的云件镜像制作方法与系统中的镜像构建模块的界面示意图。

附图9为本发明一种面向云件PaaS平台的云件镜像制作方法与系统中的生成镜像描述信息文件模块的界面示意图。

附图10为本发明一种面向云件PaaS平台的云件镜像制作方法与系统中生成的镜像JSON 文件的界面示意图。

附图11为本发明一种面向云件PaaS平台的云件镜像制作方法与系统中的镜像上传模块的界面示意图。

附图12为本发明一种面向云件PaaS平台的云件镜像制作方法与系统中的镜像打包输出结果的界面示意图。

附图13为本发明一种面向云件PaaS平台的云件镜像制作方法与系统中的镜像上传登录界面的界面示意图。

附图14为通过本发明一种面向云件PaaS平台的云件镜像制作方法与系统制作的Eclipse 软件的云件镜像在云件PaaS平台上部署后运行的启动效果图。

本发明一种面向云件PaaS平台的云件镜像制作方法与系统,该系统依次完成构建云件镜像,生成镜像JSON信息文件,上传镜像等主要功能。云件PaaS平台基于Docker容器。

因此,本发明一种面向云件PaaS平台的云件镜像制作方法与系统主要工作是针对Docker 容器构建镜像。Docker容器是一种常见的虚拟化技术。云件镜像就是容器技术的一种文件存储形式,对容器技术而言,镜像文件中包含文件系统内容,设备文件等。此外,云件镜像是由多个镜像叠加组成。云件镜像包含如下镜像层,通过简单介绍镜像的层级关系,来简要说明云件镜像的构建原理。

(1)bootfs

Docker的镜像由一层一层的文件系统叠加组成,层级的文件系统就是UnionFS,其中 Docker使用的是AUFS。bootfs位于Docker的最底层,是引导文件系统包括了bootloader和操作系统内核,类似于典型的Linux操作系统。

(2)rootfs

rootfs在bootfs层之上,是云件所使用的Docker容器启动后进程可见的文件系统,是云件容器的根目录,该目录下包含了该云件容器所需要的系统文件,配置,工具,容器文件等。

(3)image

整个rootfs的磁盘大小大约200MB,在实现云件容器的创建与迁移的过程中,每次迁移都包含整个rootfs仍然有些臃肿。通过多个image沿用联合挂载技术来组成rootfs,并实现复用。一层image叠加在另一层image之上,每一个image含有一个ID,用来唯一的标记这个image。

(4)layer

layer的概念类似与image但要广于image。rootfs由多个只读的image组成,每一个 image都可以成为一个layer,而且在rootfs上的可读写的文件系统也可以称作一个layer。这层layer常常被称作top layer。实际情况中,便于文件系统构建的需要,在rootfs与top layer之间还有一个init layer,也是一个可读写的层。

本发明制作的云件镜像,是把top layer转变为image。使用本系统的CWBuilderbuild 或CWBuilder commit功能对top layer进行打包,这样即可把容器运行的必要的文件系统保存至镜像文件,完成云件镜像的构建。

该系统的具体实现步骤如下:

步骤1:选择云件镜像构建的交互界面

根据不同的用户可能的使用环境,本系统提供两种主流操作系统下的云件镜像制作工具。在Ubuntu下,本系统使用命令行作为交互方式;在Windows下,本系统设计一套图形界面作为与用户交互的形式。

(1)命令行

命令行工具采用nodejs v6.0.0版作为编程语言。为了实现该程序的主要功能,本系统提供了一套参数可供进行不同的处理。设置默认运行时并配置环境变量,使本系统可以全局运行。将本系统命名为CWBuilder。

本发明提供了两条主要的参数作为命令入口:CWBuilder commit和CWBuilderbuild。

同时本系统也提供该程序的帮助参数-h,--help。最终CWBuilder程序的入口界面即为:

CWBuilder[command][options]

命令行入口界面详见图14。

(2)图形界面

在windows操作系统下,本系统为云件开发者设计并实现了图形界面程序,使用户可以更加直观清晰的掌握镜像制作的各项流程和步骤。

主界面设计简洁,突出三个功能的按钮,单击按钮便可以在主界面的窗口中刷新出每一个功能的操作界面。三个按钮分别是:镜像构建,生成JSON,镜像上传。

其中在镜像构建的窗口中,包含了采用CWBuilder build模式构建镜像和采用CWBuilder commit模式构建镜像。其中CWBuilder build模式提供了选择Dockerfile目录的按钮, CWBuilder commit模式提供了容器ID的输入界面。

在生成JSON的窗口中,单击开始创建按钮将启动引导输入JSON对象的属性值的向导。该向导包含了五个向导页。依次输入各项属性值,在最后一个向导页会显示完整的JSON对象,如果有需要修改的地方,直接在其中修改即可。单击完成即可在选定目录下生成描述镜像的 package.json文件。

在镜像上传窗口中,该工具提供了镜像打包和上传两个按钮。需要首先执行镜像打包,输入打包镜像的ID,选择输出镜像包的目录,完成之后进行镜像打包。镜像打包完成后,执行上传,在弹出的向导页中,依次输入镜像仓库的登录信息和改镜像的标签信息,最终执行上传,即可把镜像上传至指定的镜像仓库中。

在每一个窗口的执行过程中,该工具在结束时都会弹出每一个功能执行的结果和日志,方便了云件开发者检查可能出现的错误,也给云件开发者一个及时的完成反馈。

图形化界面中,主窗体中加入GroupBox控件,用于在一个窗口下显示三个不同部分的功能模块,在这个GroupBox控件上添加四个窗口,分别命名为windows0,windows1,windows2, windows3。其中windows0用来显示欢迎和介绍信息,windows1用来显示云件镜像构建界面, windows2用来显示云件JSON信息文件生成界面,windows3用来显示云件上传界面。每一个窗口的显示由按钮点击事件的出现来触发。每次点击将执行gpbWindows.Controls.Clear() 和gpbWindows.Controls.Add(w)来刷新界面。

步骤2:选择云件镜像构建模式

本系统提供了两种云件镜像构建模式。一种是基于当前运行中的容器构建成镜像,对应的命令是CWBuilder commit;另一种是基于一个已存在的镜像对其进行需要的操作后构建成镜像,对应的命令是CWBuilder build。

在使用CWBuilder build时,选项可以使用-h进行CWBuilder build的帮助提示。

在使用CWBuilder commit时,选项中同样可以使用-h进行CWBuilder commit的帮助提示。

步骤3:输入选择的镜像构建模式对应的参数

其中,CWBuilder build模式的参数格式为:

build[OPTIONS]PATH|URL|-

PATH或URL表明dockerfile文件的路径,基于这个dockerfile命令文件本系统可以构建出dockerfile内指定的基本镜像经过命令操作后的镜像。

CWBuilder commit模式的参数格式为:

commit[OPTIONS]CONTAINER[REPOSITORY[:TAG]]

CONTAINER参数是要构建镜像的容器ID,后面可选参数REPOSITORY和TAG可以指定构建容器的仓库和标签,用于明确的标记该镜像。

图形界面的参数也类似,CWBuilder build模式中通过在图形界面中选择dockerfile文件的路径,CWBuilder commit模式在图形界面中输入容器的ID。

步骤4:构建云件镜像

本系统的核心功能是实现云件镜像的构建。CWBuilder build将实现基于一个镜像和指定命令的Dockerfile文件来构建一个新的云件镜像,在构建过程中也将会调用CWBuilder commit的构建方法,因为build作业需要首先启动一个基础镜像到容器,再在容器中运行Dockerfile中指定的命令,之后会把容器再制作成镜像,这个过程也就是从容器打包成镜像的过程,也就是包含了commit作业的过程。所以这里将以build作业为例,叙述构建镜像的机制和实现过程。

在接收到build作业后,CWBuilder Client模块首先进行命令行参数的解析,完成之后会进入Dockerfile的内容采集阶段。用户通过程序交互界面传入Dockerfile的本地路径。

当采集到Dockerfile,CWBuilder Client模块会与CWBuilder Server模块进行通信。 CWBuilder Server模块将执行一个作业,job.Run,进行build作业。CWBuilder Daemon模块将处理该作业,从Dockerfile中成功获取命令内容,开始进行云件镜像的构建过程。

实现过程中,本发明调用开源代码库build.go。该代码库将从镜像启动一个具体的实例化容器,这是一个启动容器的动态过程。在获取Dockerfile的内容后,每一个Dockerfile 的开头都是FROM命令,指明了将要构建的镜像的基础镜像。当获取基础镜像之后,CWBuilder Daemon将基于这个基础镜像创建Contianer对象。

接下来Container类型实例将执行Mount函数挂载基础镜像的文件系统,并启动一个 Docker容器。在这个容器中,CWBuilder Daemon逐条执行Dockerfile中定义的命令,进行逐层的commit操作,得到逐层的镜像内容。

commit操作调用公开库layer_store.go,获取容器的文件系统并打包为tar文件,具体流程即把当前容器的文件系统的读写层进行打包。完成后将会执行Docker的开源函数Register(),验证将要创建的镜像ID,并初始化镜像的目录,创建镜像的路径,把当前容器的读写层文件系统制作成镜像,存储镜像内容,最终注册镜像ID。这样就完成了一个云件镜像的创建作业。

步骤5:输出镜像构建日志及结果

当镜像构建成功后,将会使用cmd函数重定向输出流,以图形化窗口的形式显示镜像构建的日志与结果。在命令行的交互模式中,本系统将直接在命令行中显示镜像构建的输出结果。使用process.StandardOutput和process.StandardError截取输出流和错误流。

步骤6:输入描述云件镜像的信息

除了在镜像创建过程中生成的json镜像信息文件之外,还需要额外的属性信息来描述云件镜像。这是因为云件PaaS平台会根据这些属性信息来分配给这个云件的资源,并为此云件的运行进行按需计费。因此本系统提供除了支持Docker的json文件之外,还需要提供支持云件PaaS平台的json文件。

当镜像构建成功执行之后,本系统将自动进入描述云件镜像信息的输入步骤,提示用户输入并生成该镜像的JSON信息文件。该系统会逐步引导用户输入相应的属性值,同时考虑到其中多个属性值可能会使用常见的值,本系统将提供默认值。默认值在每个输入部分的前面用一对圆括号包含起来表示,如果用户同意使用该默认值,不用输入,直接回车即可;如果用户不使用该默认值,而是需要另行命名时,用户输入自定义值,回车确认结束该属性的输入。

本程序提供的JSON对象的属性如表1中所示。

表1

步骤7:生成描述镜像的JSON文件

命令行交互方式中,本系统负责处理镜像信息输入并生成json文件的代码是init-package-json.js,负责获取需要输入的属性及处理值的输入,写入至最终的package.json文件中。

把输入的字符串转换成为json对象,实现生成json对象的时候使用JSON.parse()解析实现。

在执行镜像信息输入与文件生成时,主程序CWBuilder.js中createJson()函数调用 init-package-json模块,模块init-package-json.js提供入口函数init(dir,input,config,cb)。其中dir参数是process.cwd()获取的当前路径,cb参数是编写的回调函数function(er,data),用来处理后续部分。

其中在init-package-json模块中的default-input.js文件中提供了属性的定义与输入处理。属性列表于表1中已详细列出。依次读取上述若干属性的输入值存入到相应的变量中。

其中有若干属性值是默认的,针对属性的默认值处理是相似的。这里以package.type变量也就是type属性为例。type变量值赋初值‘cloudware’或是读取已有的package.json 的type属性值。函数readDeps(test)负责处理每一个属性的输入,并把获取的字符串进行 JSON解析,使用p=JSON.parse(p)。

最终命令行程序通过使用rf.writeFileSync('package.json',data)语句,把存放在 data变量中的JSON对象写出至当前工作路径,即Dockerfile项目所在路径的package.json 中。

在图形界面交互方式中,windows2窗口用来创建该json文件。点击开始创建将弹出向导页。该向导页由5个窗体构成。窗体名称分别为:JsonForm1,JsonForm2,JsonForm3,JsonForm4,JsonForm5。

本系统建立了一个JsonClass类专门存储所要生成的JSON对象。JsonClass类中包含三个成员:存储属性名称的property字符串数组,存储属性值的value字符串数组,和用来存储图标信息的icon字符串数组。property数组中存放的属性名称在表1中已展示。value数组中,除了有默认值的属性外,其余属性的值初始化为空,所有的属性值都可以通过在向导中的输入而重新赋值。

向导页1中只显示提示信息,说明本向导是用来提供描述云件镜像的JSON文件的生成。

向导页2中开始输入JSON的相关属性值。提供了镜像名称,版本,许可这类基础镜像信息的属性输入。

向导页3中提供了镜像类型,最小系统需求,按时付费,图表大小,图标路径这5类用于描述云件运行信息的属性输入。

向导页4中提供了Git仓库,主页,作者,描述这4类云件开发者习惯添加的开发者信息的属性输入。

向导页5中会把JsonClass类整理成为标准JSON的格式显示在文本框中,如果用户需要修改,可以直接在文本框中修改。完成后会如果没有输入路径会弹出文件浏览器选择路径输入。

每一个向导页通过点击下一步按钮,触发事件调转至下一个向导页,使用goto语句实现。

提交后将会在指定目录下生成描述该云件镜像的package.json文件,实现方式是使用 WriteJson函数中的StreamWriter方法写出文件。

步骤8:打包将要上传的镜像

在图形化界面中,输入将上传镜像的ID,并选择镜像包的输出目录。使用cmd函数执行 Docker的docker-machine命令,将镜像文件打包成img.tar文件。

步骤9:镜像上传

在镜像成功构建和镜像信息文件成功生成之后,本系统将进行镜像上传的工作。云件PaaS 平台的镜像仓库是国内比较成熟的容器云平台DaoCloud提供的镜像仓库。在进行镜像上传工作时,直接采用DaoCloud提供的上传接口进行上传。需要配置好指定的用户名以及镜像仓库路径。

考虑到一个用户的用户名是长期不会变化的,因此在云件镜像制作工具的目录下建立 username文件用来存放用户名,该程序会从文件中读取用户名。同理,镜像仓库的名字也不会经常变化,所以将使用同样的文件registryName存放镜像仓库路径。

最终一个完整的镜像仓库路径由已下几部分构成,镜像仓库服务商域名,用户名和仓库名称构成。

registryURL=registryURL+username+'/'+registryName;

在进行镜像上传工作时,本系统首先进行镜像仓库的登录。执行exec(cmdStr_login, function(err,stdout,stderr))语句登录DaoCloud镜像仓库。Daocloud提示输入用户名,密码,邮箱三个验证信息,在验证成功后,回复显示Login successful的提示信息。

之后本系统执行CWBuilder tag命令给该镜像加上标签,通用的规则就是registryURL+ 标签作为该镜像的标签。registryURL的构造方式如上,标签需要用户通过readline输入。这样的好处是便于进行区分和使用镜像,同时也是DaoCloud这类镜像仓库必须经过的步骤。通过执行exec(cmdStr_tag,function(err,stdout,stderr))语句给该镜像添加标签。

最后只需要执行CWBuilder push,参数是registryURL,也就是该镜像的标签,就可以把镜像上传到镜像仓库中去。执行exec(cmdStr_push,function(err,stdout,stderr)) 语句执行CWBuilder push上传操作。

步骤10:输出镜像上传日志及结果

等镜像上传成功后,镜像仓库会自动返回上传成功的提示信息。类似地,使用process.StandardOutput和process.StandardError截取输出流和错误流,将输出信息打印到窗口中,供用户查阅。

使用本发明一种面向云件PaaS平台的云件镜像制作方法与系统制作Eclipse软件的云件镜像。在Eclipse云件镜像成功上传到云件PaaS平台的镜像仓库中之后,在经过云件PaaS 平台管理员的配置和部署之后,该云件即可在云件PaaS平台上成功上线,如图13所示。登录云件PaaS平台,登录云件帐号,创建Eclipse云件,并双击执行。即可在云件PaaS平台上运行云端的Eclipse,现在就可以只通过一个可以运行浏览器的设备,随时随地在云端进行Java程序的开发工作。

本文发布于:2024-09-25 02:25:30,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/73408.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议