CN111008016A - 一种基于docker容器多环境编译***及方法 - Google Patents
一种基于docker容器多环境编译***及方法 Download PDFInfo
- Publication number
- CN111008016A CN111008016A CN201911195987.6A CN201911195987A CN111008016A CN 111008016 A CN111008016 A CN 111008016A CN 201911195987 A CN201911195987 A CN 201911195987A CN 111008016 A CN111008016 A CN 111008016A
- Authority
- CN
- China
- Prior art keywords
- compiling
- environment
- docker
- docker container
- mirror image
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 14
- 238000004590 computer program Methods 0.000 claims description 6
- 238000004519 manufacturing process Methods 0.000 claims description 6
- 238000002955 isolation Methods 0.000 claims description 3
- 238000009434 installation Methods 0.000 claims 1
- 230000010354 integration Effects 0.000 abstract description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- 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
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
本发明提供了系一种基于docker容器多环境编译***及方法,其特征在于,包括镜像生成模块、镜像获取模块、编译模块基于docker容器多环境编译***主要作用是在***集成过程中对所需要发布的程序(如java或golang或其它不同需要编译的语言)进行编译,将编译后的文件包发送到目标服务器,主要承担程序编译的任务。***支持的程序语言不受任何限制,能够针对不同的程序语言选择不同的编译工具版本进行快速编译工作。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于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
以一台服务器需要支持java jdk1.6,jdk1.7,jdk1.8,node 8,node 10五种环境为例,可制作5种docker镜像,然后在服务器上启动这5个容器,这样可同时进行5种不同环境需求的项目编译,实现环境的完全隔离,减少编译的相互影响。
本申请提供一种基于docker容器多环境编译***及方法,其特征在于,包括:
镜像生成模块、镜像获取模块、编译模块。
优选的,所述的多环境编译***,其特征在于所述的镜像生成模块步骤如下:
步骤1,根据所需要发布的项目要求编译工具版本制作相应的docker镜像,根据java编译环境不同的jdK版本代表不同的编译环境,对应不同的docker容器环境:jdk1.6,jdk1.7,jdk1.8,node 8,node 10;
步骤2,将制作好的镜像推入镜像库中。
优选的,所述的多环境编译***,其特征在于所述的镜像获取模块包括:
镜像匹配单元:在服务器端从镜像库中拉取所需要的编译环境(即不同的docker镜像):docker jdk1.6,docker jdk1.7,docker jdk1.8,docker node
8,docker node 10;
镜像加载单元:在启动docker容器时,将host服务器上的项目存放路径挂载到每个docker镜像中,如图1所示。
优选的,所述的多环境编译***,其特征在于所述的编译模块步骤如下:
步骤1,根据项目代码对编译工具版本的需求,在对应的docker容器内部对项目进行相应的编译;
步骤2,在host服务器上可直接获取到编译好的文件包。
优选的,所述的多环境编译***,其特征在于***运行操作***基于linux操作***。
优选的,所述的多环境编译***,其特征在于需要安装软件版本管理命令,不限于update-alternatives工具,可实现在不同版本间切换的需求。
优选的,所述的多环境编译***,其特征在于需要安装针对不同的语言环境有针对性的安装相应的编译版本切换工具。
以上对本发明的具体实施例进行了详细描述,但其只是作为范例,本发明并不限制于以上描述的具体实施例。对于本领域技术人员而言,任何对本发明进行的等同修改和替代也都在本发明的范畴之中。因此,在不脱离本发明的精神和范围下所作的均等变换和修改,都应涵盖在本发明的范围内。
Claims (10)
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容器多环境编译***。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911195987.6A CN111008016B (zh) | 2019-11-29 | 2019-11-29 | 一种基于docker容器多环境编译***及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911195987.6A CN111008016B (zh) | 2019-11-29 | 2019-11-29 | 一种基于docker容器多环境编译***及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111008016A true CN111008016A (zh) | 2020-04-14 |
CN111008016B CN111008016B (zh) | 2024-05-14 |
Family
ID=70112406
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911195987.6A Active CN111008016B (zh) | 2019-11-29 | 2019-11-29 | 一种基于docker容器多环境编译***及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111008016B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111796863A (zh) * | 2020-07-10 | 2020-10-20 | 四川中电启明星信息技术有限公司 | 一种跨环境的项目版本的管理方法 |
CN112363733A (zh) * | 2020-10-20 | 2021-02-12 | 深圳力维智联技术有限公司 | 一种基于Docker容器的持续集成方法 |
CN113064595A (zh) * | 2021-03-22 | 2021-07-02 | 北京北信源软件股份有限公司 | 一种基于Docker镜像的QT应用程序编译方法和装置 |
CN113805858A (zh) * | 2021-02-10 | 2021-12-17 | 京东科技控股股份有限公司 | 持续部署脚本语言开发的软件的方法和装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017020770A1 (zh) * | 2015-07-31 | 2017-02-09 | 中兴通讯股份有限公司 | 基于lxc的持续集成方法及装置 |
CN106815052A (zh) * | 2017-01-10 | 2017-06-09 | 南威软件股份有限公司 | 一种适配多环境配置的快速部署***的方法 |
CN106873975A (zh) * | 2016-12-30 | 2017-06-20 | 武汉默联股份有限公司 | 基于Docker的devops持续交付与自动化***及方法 |
WO2017166529A1 (zh) * | 2016-03-29 | 2017-10-05 | 乐视控股(北京)有限公司 | 一种针对多个编译平台的编译***和方法 |
CN107741851A (zh) * | 2017-10-12 | 2018-02-27 | 北京元心科技有限公司 | 编译***的编译方法、装置及终端设备 |
CN108984179A (zh) * | 2018-06-28 | 2018-12-11 | 北京奇安信科技有限公司 | 一种Linux下编译处理方法及装置 |
CN109032602A (zh) * | 2018-06-07 | 2018-12-18 | 山东超越数控电子股份有限公司 | 一种软件自动适配操作***的方法 |
CN109491662A (zh) * | 2018-10-31 | 2019-03-19 | 珠海市筑巢科技有限公司 | 代码打包方法、计算机装置及计算机可读存储介质、代码打包*** |
WO2019095936A1 (zh) * | 2017-11-15 | 2019-05-23 | 腾讯科技(深圳)有限公司 | 容器镜像的构建方法、***、服务器、装置及存储介质 |
CN110489126A (zh) * | 2019-08-08 | 2019-11-22 | 腾讯科技(深圳)有限公司 | 编译任务的执行方法和装置、存储介质及电子装置 |
-
2019
- 2019-11-29 CN CN201911195987.6A patent/CN111008016B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017020770A1 (zh) * | 2015-07-31 | 2017-02-09 | 中兴通讯股份有限公司 | 基于lxc的持续集成方法及装置 |
WO2017166529A1 (zh) * | 2016-03-29 | 2017-10-05 | 乐视控股(北京)有限公司 | 一种针对多个编译平台的编译***和方法 |
CN106873975A (zh) * | 2016-12-30 | 2017-06-20 | 武汉默联股份有限公司 | 基于Docker的devops持续交付与自动化***及方法 |
CN106815052A (zh) * | 2017-01-10 | 2017-06-09 | 南威软件股份有限公司 | 一种适配多环境配置的快速部署***的方法 |
CN107741851A (zh) * | 2017-10-12 | 2018-02-27 | 北京元心科技有限公司 | 编译***的编译方法、装置及终端设备 |
WO2019095936A1 (zh) * | 2017-11-15 | 2019-05-23 | 腾讯科技(深圳)有限公司 | 容器镜像的构建方法、***、服务器、装置及存储介质 |
CN109032602A (zh) * | 2018-06-07 | 2018-12-18 | 山东超越数控电子股份有限公司 | 一种软件自动适配操作***的方法 |
CN108984179A (zh) * | 2018-06-28 | 2018-12-11 | 北京奇安信科技有限公司 | 一种Linux下编译处理方法及装置 |
CN109491662A (zh) * | 2018-10-31 | 2019-03-19 | 珠海市筑巢科技有限公司 | 代码打包方法、计算机装置及计算机可读存储介质、代码打包*** |
CN110489126A (zh) * | 2019-08-08 | 2019-11-22 | 腾讯科技(深圳)有限公司 | 编译任务的执行方法和装置、存储介质及电子装置 |
Non-Patent Citations (1)
Title |
---|
张璜;: "基于支持移动终端的C语言在线编译***开发研究" * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111796863A (zh) * | 2020-07-10 | 2020-10-20 | 四川中电启明星信息技术有限公司 | 一种跨环境的项目版本的管理方法 |
CN111796863B (zh) * | 2020-07-10 | 2024-04-05 | 四川中电启明星信息技术有限公司 | 一种跨环境的项目版本的管理方法 |
CN112363733A (zh) * | 2020-10-20 | 2021-02-12 | 深圳力维智联技术有限公司 | 一种基于Docker容器的持续集成方法 |
CN113805858A (zh) * | 2021-02-10 | 2021-12-17 | 京东科技控股股份有限公司 | 持续部署脚本语言开发的软件的方法和装置 |
CN113805858B (zh) * | 2021-02-10 | 2024-04-05 | 京东科技控股股份有限公司 | 持续部署脚本语言开发的软件的方法和装置 |
CN113064595A (zh) * | 2021-03-22 | 2021-07-02 | 北京北信源软件股份有限公司 | 一种基于Docker镜像的QT应用程序编译方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111008016B (zh) | 2024-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111008016B (zh) | 一种基于docker容器多环境编译***及方法 | |
CN110377290B (zh) | 一种目标工程编译的方法、装置及设备 | |
CN107577491B (zh) | 一种基于Weex的移动应用内版本更新的方法、*** | |
CN111782370B (zh) | 一种kubernetes多集群管理***、方法、终端及存储介质 | |
US9489184B2 (en) | Adaptive selection of programming language versions for compilation of software programs | |
US9170825B2 (en) | Interface method resolution for virtual extension methods | |
US7509633B2 (en) | System and method for grid-based distribution of Java project compilation | |
US20140109068A1 (en) | Method for compiling an intermediate code of an application | |
CN112769706B (zh) | 组件化路由方法及*** | |
CN112764753A (zh) | 一种项目的部署方法、装置、电子设备及存储介质 | |
CN111913741B (zh) | 对象拦截方法、装置、介质及电子设备 | |
US8032877B2 (en) | Compiler neutral linking solution for C++ code | |
CN110659088B (zh) | 一种嵌入式环境下程序扩展的方法及*** | |
CN110457013B (zh) | 程序组件配置装置及方法 | |
US20040172407A1 (en) | Method and system of processing an encapsulated file at a management computer | |
US20140304701A1 (en) | Object-Oriented Open Framework for Campaign Generation | |
CN116680003A (zh) | 前端插件化*** | |
CN113626071B (zh) | 函数注册方法、***、电子设备及存储介质 | |
CN115390846A (zh) | 编译构建方法、装置、电子设备和存储介质 | |
CN115145604A (zh) | 一种容器化的电力营销***部署方法 | |
CN114090189A (zh) | 一种基于流水线的构建部署管理方法及*** | |
CN111831301A (zh) | 支持无分叉升级的区块链运行时环境***、方法 | |
CN114115859A (zh) | iOS程序基于本地静态库的编译方法、装置及*** | |
CN111400396A (zh) | 数据同步脚本的生成方法、装置及计算机可读存储介质 | |
CN112130858A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |