本发明涉及计算机技术领域,尤其涉及一种基于docker容器多环境编译系统及方法。
背景技术:
在持续集成和发布的管理系统中,需要服务器单独对从代码库中拉取的代码进行编译及发布,而在编译的过程中,不同的项目所需要的编译工具链可能是不同的,所以就涉及到对编译工具版本的管理问题。
技术实现要素:
本发明所要解决目编译的多环境管理问题,提供一种基于docker容器多环境编译系统及方法。
为解决上述技术问题,本发明采用的技术方案是
本发明提供一种基于docker容器多环境编译系统及方法,其特征在于,包括:
镜像生成模块:根据不同语言环境不同编译工具制作相应的docker镜像;
镜像获取模块:在启动docker容器时,将host服务器上的项目存放路径挂载到每个docker镜像中;
编译模块:根据项目代码对编译工具版本的需求,在对应的docker容器内部对项目进行相应的编译。
进一步地,所述的多环境编译系统,其特征在于所述的镜像生成模块步骤如下:
步骤1,根据所需要发布的项目要求编译工具版本制作相应的docker镜像;
步骤2,将制作好的镜像推入镜像库中。
进一步地,所述的多环境编译系统,其特征在于所述的镜像获取模块包括:
镜像匹配单元:在服务器端从镜像库中拉取所需要的编译环境(即不同的docker镜像);
镜像加载单元:在启动docker容器时,将host服务器上的项目存放路径挂载到每个docker镜像中。
进一步地,所述的多环境编译系统,其特征在于所述的编译模块步骤如下:
步骤1,根据项目代码对编译工具版本的需求,在对应的docker容器内部对项目进行相应的编译;
步骤2,在host服务器上可直接获取到编译好的文件包。
进一步地,所述的多环境编译系统,其特征在于系统运行操作系统基于linux操作系统。
进一步地,所述的多环境编译系统,其特征在于需要安装软件版本管理命令,不限于update-alternatives工具,可实现在不同版本间切换的需求。
进一步地,所述的多环境编译系统,其特征在于需要安装针对不同的语言环境有针对性的安装相应的编译版本切换工具。
本发明还公开了一种基于docker容器多环境编译方法,其特征在于,步骤如下:
步骤1,根据不同语言环境不同编译工具制作相应的docker镜像;
步骤2,在服务器端从镜像库中拉取所需要的编译环境(即不同的docker镜像);
步骤3,在启动docker容器时,将host服务器上的项目存放路径挂载到每个docker镜像中;
步骤4,根据项目代码对编译工具版本的需求,在对应的docker容器内部对项目进行相应的编译,以此达到对各版本环境的隔离;
步骤5,在host服务器上可直接获取到编译好的文件包。
本发明还公开了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1所述基于docker容器多环境编译系统。
本发明还公开了一种一种装置/终端设备,其特征在于,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序所述处理器执行所述计算机程序时实现如权利要求1所述基于docker容器多环境编译系统。
本发明提供了一种基于docker容器多环境编译系统及方法。该系统方案具特点如下:
1、在项目的编译过程中,能够快速根据所需工具版本进行相应的编译工作,减少了出错的概率。
2、使编译系统变的简单、易用。做到了服务器的插拔式服务,当需要不同编译工具时可随时从镜像库中拉取并启动使用,当淘汰掉某些编译工具时,可直接进行删除处理。
3、使系统程序变的更简单,更易于维护。避免了不同的版本间的来回切换,使逻辑更清晰。
4、易于扩展。当需要新的服务器作为编译服务器进行工作时,只需要将相应的镜像拉取到服务器并启动系统即可。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
图1是
本技术:
服务器结构示意图。
具体实施方式
实施例1
以一台服务器需要支持javajdk1.6,jdk1.7,jdk1.8,node8,node10五种环境为例,可制作5种docker镜像,然后在服务器上启动这5个容器,这样可同时进行5种不同环境需求的项目编译,实现环境的完全隔离,减少编译的相互影响。
本申请提供一种基于docker容器多环境编译系统及方法,其特征在于,包括:
镜像生成模块、镜像获取模块、编译模块。
优选的,所述的多环境编译系统,其特征在于所述的镜像生成模块步骤如下:
步骤1,根据所需要发布的项目要求编译工具版本制作相应的docker镜像,根据java编译环境不同的jdk版本代表不同的编译环境,对应不同的docker容器环境:jdk1.6,jdk1.7,jdk1.8,node8,node10;
步骤2,将制作好的镜像推入镜像库中。
优选的,所述的多环境编译系统,其特征在于所述的镜像获取模块包括:
镜像匹配单元:在服务器端从镜像库中拉取所需要的编译环境(即不同的docker镜像):dockerjdk1.6,dockerjdk1.7,dockerjdk1.8,dockernode
8,dockernode10;
镜像加载单元:在启动docker容器时,将host服务器上的项目存放路径挂载到每个docker镜像中,如图1所示。
优选的,所述的多环境编译系统,其特征在于所述的编译模块步骤如下:
步骤1,根据项目代码对编译工具版本的需求,在对应的docker容器内部对项目进行相应的编译;
步骤2,在host服务器上可直接获取到编译好的文件包。
优选的,所述的多环境编译系统,其特征在于系统运行操作系统基于linux操作系统。
优选的,所述的多环境编译系统,其特征在于需要安装软件版本管理命令,不限于update-alternatives工具,可实现在不同版本间切换的需求。
优选的,所述的多环境编译系统,其特征在于需要安装针对不同的语言环境有针对性的安装相应的编译版本切换工具。
以上对本发明的具体实施例进行了详细描述,但其只是作为范例,本发明并不限制于以上描述的具体实施例。对于本领域技术人员而言,任何对本发明进行的等同修改和替代也都在本发明的范畴之中。因此,在不脱离本发明的精神和范围下所作的均等变换和修改,都应涵盖在本发明的范围内。
1.一种基于docker容器多环境编译系统及方法,其特征在于,包括:
镜像生成模块:根据不同语言环境不同编译工具制作相应的docker镜像;
镜像获取模块:在启动docker容器时,将host服务器上的项目存放路径挂载到每个docker镜像中;
编译模块:根据项目代码对编译工具版本的需求,在对应的docker容器内部对项目进行相应的编译。
2.根据权利要求1所述的多环境编译系统,其特征在于所述的镜像生成模块步骤如下:
步骤1,根据所需要发布的项目要求编译工具版本制作相应的docker镜像;
步骤2,将制作好的镜像推入镜像库中。
3.根据权利要求1所述的多环境编译系统,其特征在于所述的镜像获取模块包括:
镜像匹配单元:在服务器端从镜像库中拉取所需要的编译环境(即不同的docker镜像);
镜像加载单元:在启动docker容器时,将host服务器上的项目存放路径挂载到每个docker镜像中。
4.根据权利要求1所述的多环境编译系统,其特征在于所述的编译模块步骤如下:
步骤1,根据项目代码对编译工具版本的需求,在对应的docker容器内部对项目进行相应的编译;
步骤2,在host服务器上可直接获取到编译好的文件包。
5.根据权利要求1所述的多环境编译系统,其特征在于系统运行操作系统基于linux操作系统。
6.根据权利要求1所述的多环境编译系统,其特征在于需要安装软件版本管理命令,不限于update-alternatives工具,可实现在不同版本间切换的需求。
7.根据权利要求1所述的多环境编译系统,其特征在于需要安装针对不同的语言环境有针对性的安装相应的编译版本切换工具。
8.一种基于docker容器多环境编译方法,其特征在于,步骤如下:
步骤1,根据不同语言环境不同编译工具制作相应的docker镜像;
步骤2,在服务器端从镜像库中拉取所需要的编译环境(即不同的docker镜像);
步骤3,在启动docker容器时,将host服务器上的项目存放路径挂载到每个docker镜像中;
步骤4,根据项目代码对编译工具版本的需求,在对应的docker容器内部对项目进行相应的编译,以此达到对各版本环境的隔离;
步骤5,在host服务器上可直接获取到编译好的文件包。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1所述基于docker容器多环境编译系统。
10.一种装置/终端设备,其特征在于,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序所述处理器执行所述计算机程序时实现如权利要求1所述基于docker容器多环境编译系统。