基于Docker的分布式开发环境的搭建方法及装置的制造方法
【专利摘要】本发明公开了一种基于Docker的分布式开发环境的搭建方法,包括步骤:接收用户从本地预存dockerfile文件列表中选择dockerfile文件的选择信息;判断选择的dockerfile文件是否是最新dockerfile文件;若是,则根据所述选择的dockerfile文件从代码仓库中复制与该子系统的源代码;根据最新dockerfile文件构建子系统的镜像;通过镜像构建docker容器并在docker容器中运行子系统的源代码,该搭建方法实现了分布式开发环境的单机部署,本发明还公开了应用该搭建方法的搭建装置。
【专利说明】
基于Docker的分布式开发环境的搭建方法及装置
技术领域
[0001]本发明涉及计算机领域,尤其涉及一种基于Docker的分布式开发环境的搭建方法及装置。
【背景技术】
[0002]当前分布式系统开发的形式已经成为主流的开发形态,一个项目常匹配有数十个服务,因此往往需要开发数台服务器来支撑,且各个服务器的部署也各不相同,搭建过程将耗费时力和资源,但若是公用一套开发环境,又容易造成服务器彼此之间的相互干扰,因此需要搭建一套简单,可操作,且可避免服务器之间相互干扰的开发环境。
【发明内容】
[0003]有鉴于此,实有必要提供一种将复杂的分布式开发环境从多个远程服务器集中到单机部署的基于Docker的分布式开发环境的搭建方法以及搭建装置。
[0004]本发明实施例的技术方案为:一种基于Docker的分布式开发环境的搭建方法,包括步骤:接收用户从本地预存dockerf ile文件列表中选择dockerf ile文件的选择信息,其中,一个所述dockerf ile文件对应匹配一个分布式服务的子系统;将选择的dockerf ile文件与代码仓库中的dockerfile文件进行比较,并判断所述选择的dockerfile文件是否是与其相匹配的子系统的最新dockerf ile文件;若所述选择的dockerf ile文件是所述子系统的所述最新dockerf ile文件,则根据所述选择的dockerf ile文件从所述代码仓库中复制与其相匹配的子系统的源代码;根据所述最新dockerfile文件构建所述子系统的镜像;以及基于所述镜像设置docker容器参数来构建docker容器并在所述docker容器中来运行所述源代码,用于完成分布式环境的部署。
[0005]—种基于Docker的分布式开发环境的搭建装置,包括彼此之间建立通讯连接的Ecl ipse插件、代码开发IDE以及boot2docker虚拟机,所述代码开发IDE还与代码仓库建立通讯连接,所述代码仓库用于存储所有分布式服务的子系统的源代码以及dockerfile文件,所述Eclipse插件包括第一接收模块以及第一发送模块;所述代码开发IDE包括第二接收模块、判断模块、复制模块以及代码目录模块;所述boot2docker虚拟机包括共享模块、镜像生成模块以及容器构建模块,所述第一接收模块用于所述Eclipse插件接收用户于从本地预存的dockerf ile文件列表中选择dockerf ile文件的选择信息,一个所述dockerf ile文件对应匹配一个所述子系统;所述第一发送模块用于发送所述选择信息给所述代码开发IDE的所述第二接收模块;所述判断模块用于所述代码开发IDE将选择的dockerf i Ie文件与所述代码仓库中的dockerf i Ie文件进行比较,并判断所述选择的dockerf i Ie文件是否是与其相匹配的子系统的最新dockerf ile文件;所述复制模块用于当所述选择的dockerf ile文件是所述子系统的所述最新dockerfile文件时,所述代码开发IDE根据所述选择的dockerfile文件从所述代码仓库中复制相匹配的子系统的源代码;所述代码目录模块用于存储所述复制模块获取的所述源代码以及本地预存的dockerfile文件;所述镜像生成模块与所述代码目录模块连接,用于读取所述最新dockerf i Ie文件,并根据所述最新dockerfile文件构建子系统的镜像;所述容器构建模块用于所述镜像构建后,设置docker容器参数来构建docker容器并与所述代码目录模块连接来读取所述源代码,可使所述源代码可在所述docker容器中运行。
[000?]基于上述基于Docker的分布式开发环境的搭建方法和搭建装置,利用了Docker技术,代码开发IDE存储有子系统的源代码以及dockerf ile文件,boot2docker虚拟机还与代码开发IDE建立连接来读取所述子系统的源代码和dockerf i Ie文件,并根据dockerf i Ie文件建立与分布式服务的子系统相匹配的镜像和docker容器,以使子系统的该源代码可在相匹配的docker容器中运行;该镜像和docker容器均部署在同一 boot2docker虚拟机上,而代码开发IDE和b00t2d0cker虚拟机又部署在同一开发主机上,从而将复杂的分布式开发环境从多个远程服务器集中到单机部署。
【附图说明】
[0007]图1为本发明实施例基于Docker的分布式开发环境的搭建方法的流程图。
[0008]图2为本发明实施例基于Docker的分布式开发环境的搭建装置的结构示意图。
[0009]图3为本发明实施例基于Docker的分布式开发环境的搭建装置的功能模块图。
【具体实施方式】
[0010]下面将结合本发明实施方式中的附图,对实施方式中的技术方案进行清楚、完整的描述。
[0011 ]本发明实施例提供的分布式开发环境的搭建方法,利用了 Docker技术,将子系统的源代码从代码仓库复制到代码开发IDE,b00t2d0cker虚拟机还与代码开发IDE建立连接,用于该boot2docker虚拟机可共享子系统的源代码;还在boot2docker虚拟机建立与分布式服务的子系统相匹配的镜像和docker容器,以使子系统的该源代码可在相匹配的docker容器中运行。由于镜像和docker容器部署在同一b00t2d0cker虚拟机上,而代码开发IDE和boot2docker虚拟机又部署在同一windows开发主机上,而windows主机作为代码IDE开发环境,负载代码的编写与同步。从而将原本需要将子系统部署在多个远程服务器的分布式开发环境简化,节省了资源,降低了开发成本。
[0012]请参看图1,本实施中基于Docker的分布式开发环境的搭建方法包括步骤:
[0013]步骤SlOl:接收用户从本地预存dockerf ile文件列表中选择dockerf ile文件的选择信息,其中,一个dockerf i Ie文件对应匹配一个分布式服务的子系统。具体地,本地预存有dockerf ile文件列表,用户根据dockerf ile文件列表可选择所需要的子系统提供的服务对应的dockerfile文件来构建与其相匹配的镜像。例如,用户需要检索服务,此时可选择提供检索服务的子系统所对应的dockerf ile文件。本实施例子中,本地预存dockerf ile文件存储在代码开发IDE中,Eclipse插件与代码开发IDE建立通讯连接。利用Eclipse插件技术,Ec I ipse插件将读取存储在代码开发IDE中的本地预存的dockerf ile文件,并其工作台workbench的图形框架SWT中以可视化图形展示预存的dockerf ile文件列表。
[0014]步骤S103:将选择的dockerf ile文件与代码仓库中的dockerf ile文件进行比较,并判断该选择的dockerf ile文件是否是与其相匹配的子系统的最新dockerf ile文件。具体地,为了获取到子系统的最新dockerf ile文件,就需要对用户选择的dockerf ile文件进行判断其是否是该子系统最新dockerfile文件。本实施例子中,代码仓库设于远程服务器上,代码仓库中存储有分布式服务的子系统的源代码和dockerfile文件。为了获取到子系统的最新dockerf ile文件,就需要对用户选择的dockerf ile文件与代码仓库中的dockerf ile文件比较。
[0015]步骤S104:若所述选择的dockerf ile文件是所述子系统的最新dockerf ile文件,则将根据选择的dockerfile文件从代码仓库中复制与其相匹配的子系统的源代码。
[0016]步骤S105:若所述选择的dockerfile文件不是其相匹配的子系统的所述最新dockerf ile文件,则将根据所述选择的dockerf ile文件从所述代码仓库中复制所述子系统的所述源代码以及所述最新dockerf ile文件。
[0017]步骤S107:根据所述最新dockerf i I e文件构建所述子系统的镜像。具体地,dockerf ile文件用来描述构建镜像的步骤,因此根据dockerf ile文件来自从构建与其匹配的镜像。dockerfile文件中包含了对各自子系统的代码编译、打包和构建部署脚本,因此代码更新后,通过新的dockerf ile文件构建的新的镜像中就自动添加了新的应用。本实施例子中,b00t2d0cker虚拟机与代码开发IDE建立挂载以共享所述源代码和或所述最新dockerf ile 文件。
[0018]步骤S108:所述镜像构建成功后,设置docker容器参数来构建docker容器并在所述docker容器中来运行所述源代码,用于完成分布式环境的部署。具体地,基于镜像创建并启动docker容器后,此时,boot2docker虚拟机将与代码开发IDE共享的子系统的源代码映射到对应的子系统的docker容器中,在docker容器运行源代码,完成分布式环境的部署。此时,docker容器之间是彼此隔离的,可避免了发生相互干扰的情况。
[0019]上述搭建方法构建与分布式服务的子系统匹配的镜像和docker容器,以使子系统的该源代码可在相匹配的docker容器中运行,从而将复杂的分布式开发环境从多个远程服务器集中到单机部署,节省了资源和开发成本,且通过构建的相互彼此隔离的docker容器,还可避免开发干扰。
[°02°] 相对与上述实施例,进一步地,本实施例子中S107中boot2docker虚拟机根据所述最新dockerf ile文件构建所述子系统的镜像的步骤之前还包括:
[0021]步骤S106:从基础镜像仓库中获取基础镜像。具体地,基础镜像仓库用于存储基础镜像,获取到用来描述构建镜像的步骤的最新dockerfile文件以及基础镜像后,根据最新dockerf ile文件的内容指示构建构建具有特定功能的镜像。本实施例中,boot2docker虚拟机与代码开发与基础镜像仓库建立通讯连接。
[0022]相对与上述实施例,进一步地,步骤SlOI中接收用户从本地预存dockerf i Ie文件列表中选择dockerf ile文件的选择信息的步骤之后还包括:
[0023]步骤S102:生成复制指令,该复制指令包含选择的dockerfile文件的选择信息。具体地,本实施例子中,Eclipse插件接收到选择信息后,生成复制指令并发送给代码开发IDE。代码开发IDE接收到复制指令后才进行步骤S103。
[0024]请参看图2和图3,本发明实施例提供的一种基于Docker的分布式开发环境的搭建装置100包括了彼此之间建立通讯连接的boot2docker虚拟机101、代码开发IDE 201以及Eclipse插件301。代码开发IDE201还与代码仓库建立通讯连接,用于从代码仓库中获取分布式服务的子系统的源代码以及dockerfile文件,且代码开发IDE 201将存储其获取的源代码以及dockerf ile文件以及本地预存的dockerf ile文件;而130<^2(1001^1'虚拟机101与代码开发IDE 201建立通讯连接以共享源代码以及dockerfile文件,并构建与子系统相匹配的镜像和docker容器,以使子系统的该源代码可在相匹配的docker容器中运行。本实施例子中镜像和docker容器部署在同一boot2docker虚拟机上,而代码开发IDE 201和boot2docker虚拟机101又部署在同一windows开发主机上。
[°°25] Eclipse插件301基于Eclipse插件技术,其将从代码开发IDE 201中读取本地预存的dockerf ile文件在Ecl ipse插件301的工作台wordbench中的图形框架SWT中以可视化图形列表展示。又因为一个所述dockerfile文件对应匹配一个所述子系统,因此,用户可从本地预存的dockerfile文件列表中选择能够提供所需某项服务的子系统所对应的dockerf ile文件,并将用户的选择信息发送给代码开发IDE 201 Acl ipse插件301包括显示模块302、第一接收模块303以及第一发送模块304。
[0026]显示模块302用于将Eclipse插件301从代码开发IDE 201中读取本地预存的dockerf i Ie文件以可视化图形列表展示。
[0027]第一接收模块303用于接收用户于从dockerf ile文件列表中选择dockerf ile文件的选择信息。
[0028]第一发送模块304用于发送选择信息给代码开发IDE 201。
[0029]所述代码开发IDE201包括代码目录模块202、判断模块203、复制模块204以及第二接收模块205。
[0030]第二接收模块205接收第一发送模块304用于发送选择信息。
[0031]判断模块203用于第二接收模块205接收选择信息后,将选择的dockerfile文件与所述代码仓库中的dockerf i Ie文件进行比较,并判断所述选择的dockerf i Ie文件是否是与其相匹配的子系统的最新dockerfile文件。
[0032]复制模块204用于当判断模块203判断出所述选择的dockerfile文件是所述子系统的所述最新dockerf ile文件时,根据所述选择的dockerf ile文件从所述代码仓库中复制相匹配的子系统的源代码。或者当判断模块203判断出所述选择的dockerfile文件不是其相匹配的子系统的所述最新dockerf ile文件,则所述代码开发模块将根据所述选择的dockerf ile文件从所述代码仓库中复制所述子系统的所述源代码以及所述最新dockerf ile 文件。
[0033]代码目录模块202用于存储复制模块204获取的源代码和最新dockerfile文件以及本地预存的dockerf ile文件。
[0034]所述b00t2d0Cker虚拟机101包括镜像生成模块103以及容器构建模块104。
[0035]镜像生成模块103与代码目录模块202连接,读取子系统的最新dockerfile文件,并根据该最新的dockerf i I e文件构建子系统的镜像。
[0036]容器构建模块104用于镜像创建后,设置docker容器参数来构建docker容器并与代码目录模块202连接来读取子系统的源代码,可使所述源代码可在所述docker容器中运行。具体地,基于Docker技术,docker容器获取到子系统的源代码,以使该子系统的源代码可在其相匹配的docker容器中运行,以此来提供服务给用户。
[0037]上述搭建装置从代码仓库获取到了源代码和dockerfile文件,利用子系统的最新dockerf ile文件构建了与分布式服务的子系统匹配的镜像和docker容器,便使子系统的该源代码可在相匹配的docker容器中运行,从而将复杂的分布式开发环境从多个远程服务器集中到单机部署,节省了资源和开发成本,且通过构建的相互彼此隔离的docker容器,还可避免开发干扰。
[0038]相对与上述实施例,进一步地,镜像生成模块103为了构件与子系统相匹配的镜像,该搭建装置100的boot2docker虚拟机101还包括基础镜像获取模块105,基础镜像获取模块105与基础镜像仓库建立通讯,用于从基础镜像仓库中获取基础镜像。从而,镜像生成模块103根据从共享模块102读取的子系统的所述最新dockerfile文件,在基础镜像上构建具有特定功能的镜像。
[0039]相对与上述实施例,进一步地,Eclipse插件301的第一接收模块303所接收用户于从dockerf ile文件列表中选择dockerf ile文件的选择信息是通过复制指令输送代码开发IDE 201,第一接收模块202接收到选择信息后,第一发送模块203通过发送复制指令给代码开发IDE 201,该复制指令中包含该选择信息。
[0040]相对与上述实施例,进一步地,boo t2docker虚拟机1I还包括共享模块102,共享模块102用于boot2docker虚拟机101与代码开发IDE 201建立通信连接,用于共享代码目录模块202中的源代码以及最新dockerf ile文件,以及共享模块102还与镜像生成模块103建立通讯连接来传输最新dockerfile文件,还与容器构建模块104建立通讯连接来传输源代码。具体地,若所选择的dockerf ile文件是相匹配的子系统的最新dockerf ile文件,则此时共享模块获取的最新dockerf ile文件即为用户所选择的dockerfile文件;若所选择的dockerf ile文件不是相匹配的子系统的最新dockerf ile文件,则此时共享模块获取的最新dockerf ile文件即为复制模块从代码仓库中复制过来的。本实施例子中,共享模块102为共享磁盘,其与代码目录模块202建立磁盘挂载,还通过磁盘映射方式传输源代码到docker容器中。
[0041]综合而言,本发明实施例中的基于Docker的分布式开发环境的搭建方法和搭建装置,利用Docker技术,实现了分布式服务子系统的单机部署,且利用相互隔离的docker容器可避免了开发时各个服务间的相互干扰,减少了对服务器环境依赖,降低了开发成本。此外,还利用Ecl ipse插件技术实现了可视化的文件选择。
[0042]所属领域的技术人员可以清楚地了解到,为了描述简洁,上述描述的装置、模块、单元具体工作过程可以参看前述方法实施例中的对应过程,在此不再赘述。
[0043]在本申请所提供的几个实施例中,所揭示的方法和装置可以通过其他方式实现,例如以上描述的装置实施例仅为示意性的,所述模块单元的划分仅仅为一种逻辑功能划分,实现时可以有另外的划分方式,例如多个单元或者组件可以结合或者一些特征可以忽略或者不执行。
[0044]对所公开实例的上述说明,使得本技术领域专业人员能够实现或者使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点一致的最宽范围。
【主权项】
1.一种基于Docker的分布式开发环境的搭建方法,其特征在于,包括步骤: 接收用户从本地预存dockerfile文件列表中选择dockerf ile文件的选择信息,其中,一个所述dockerf ile文件对应匹配一个分布式服务的子系统; 将选择的dockerf ile文件与代码仓库中的dockerf ile文件进行比较,并判断所述选择的dockerf ile文件是否是与其相匹配的子系统的最新dockerf ile文件; 若所述选择的dockerf ile文件是所述子系统的所述最新dockerf ile文件,则根据所述选择的dockerfile文件从所述代码仓库中复制与其相匹配的子系统的源代码; 根据所述最新dockerf i Ie文件构建所述子系统的镜像; 基于所述镜像设置docker容器参数来构建docker容器并在所述docker容器中来运行所述源代码,用于完成分布式环境的部署。2.如权利要求1所述的基于Docker的分布式开发环境的搭建方法,其特征在于,所述将选择的dockerf ile文件与代码仓库中的dockerf ile文件进行比较,并判断所述选择的dockerf ile文件是否是与其相匹配的子系统的最新dockerf ile文件的步骤之后还包括: 若所述选择的dockerfile文件不是其相匹配的子系统的所述最新dockerf ile文件,则根据所述选择的dockerf ile文件从所述代码仓库中复制所述子系统的所述源代码以及所述最新dockerf ile文件。3.如权利要求2所述的基于Docker的分布式开发环境的搭建方法,其特征在于,根据所述最新dockerf i Ie文件构建所述子系统的镜像步骤之前还包括: 从基础镜像仓库中获取基础镜像。4.如权利要求3所述的基于Docker的分布式开发环境的搭建方法,其特征在于,所述接收用户从本地预存dockerf ile文件列表中选择dockerf ile文件的选择信息的步骤之后还包括: 生成复制指令,所述复制指令包括用户选择dockerf i Ie文件的的所述选择信息。5.—种基于Docker的分布式开发环境的搭建装置,包括彼此之间建立通讯连接的Ecl ipse插件、代码开发IDE以及boot2docker虚拟机,所述代码开发IDE还与代码仓库建立通讯连接,所述代码仓库用于存储所有分布式服务的子系统的源代码以及dockerfile文件,其特征在于,所述Ecl ipse插件包括第一接收模块以及第一发送模块;所述代码开发IDE包括第二接收模块、判断模块、复制模块以及代码目录模块;所述boot2docker虚拟机包括镜像生成模块以及容器构建模块, 所述第一接收模块用于所述Ecl ipse插件接收用户于从本地预存的dockerf ile文件列表中选择dockerf ile文件的选择信息,一个所述dockerf ile文件对应匹配一个所述子系统; 所述第一发送模块用于发送所述选择信息给所述代码开发IDE的所述第二接收模块;所述判断模块用于所述代码开发IDE将选择的dockerfile文件与所述代码仓库中的dockerf ile文件进行比较,并判断所述选择的dockerf ile文件是否是与其相匹配的子系统的最新dockerf i I e文件; 所述复制模块用于当所述选择的d ο c k e r f i I e文件是所述子系统的所述最新dockerf ile文件时,所述代码开发IDE根据所述选择的dockerf ile文件从所述代码仓库中复制相匹配的子系统的源代码; 所述代码目录模块用于存储所述复制模块获取的所述源代码以及本地预存的dockerf ile 文件; 所述镜像生成模块与所述代码目录模块连接,用于读取所述最新 dockerf i Ie文件,并根据所述最新dockerf i Ie文件构建子系统的镜像; 所述容器构建模块用于所述镜像生成后,基于所述镜像设置docker容器参数来构建docker容器并与所述代码目录模块连接来读取所述源代码,可使所述源代码可在所述docker容器中运行。6.如权利要求5所述的搭建装置,其特征在于,所述复制模块还用于当所述判断模块判断出所述选择的dockerf ile文件不是所述子系统的所述最新dockerf ile文件时,根据所述选择的dockerf ile文件从所述代码仓库中复制所述子系统的所述源代码以及所述最新dockerf ile 文件。7.如权利要求6所述的搭建装置,其特征在于,所述boot2docker虚拟机还与基础镜像仓库建立通讯连接,所述boot2docker虚拟机还包括基础镜像获取模块, 所述基础镜像获取模块用于从所述基础镜像仓库获取基础镜像。8.如权利要求7所述的搭建装置,其特征在于,所述第一发送模块用于发送生成的复制指令给所述第二接收模块,所述复制指令包含用户选择的dockerf ile文件的所述选择信息;所述第二接收模块接收所述复制指令以使所述判断模块执行判断操作。9.如权利要求8所述的搭建装置,其特征在于,所述Eclipse插件还包括显示模块,所述显示模块用于读取所述代码目录模块的本地预存的dockerfile文件以图形列表形式显示本地预存的dockerf ile文件列表。10.如权利要求9所述的搭建装置,其特征在于,所述boot2docker虚拟机还包括共享模块,所述共享模块用于所述boot2docker虚拟机与所述代码开发IDE建立通讯连接以共享所述代码目录模块中的所述源代码以及所述最新dockerfile文件,以及所述共享模块还分别与所述镜像生成模块以及所述容器构建模块建立通讯连接,用于将所述最新dockerfile文件输送给述镜像生成模块以及将所述源代码输送给所述容器构建模块。
【文档编号】G06F9/44GK105824614SQ201510937134
【公开日】2016年8月3日
【申请日】2015年12月15日
【发明人】王沛文, 钟坚, 廖小文, 曹建平
【申请人】广东亿迅科技有限公司