今日主要与大家分享关于Docker持续集成开发环境的搭建过程。
持续集成是软件开发中一个非常重要的环节,我们都知道持续集成的这种方式,不仅仅是影响软件开发的效率,实际上还会对我们软件开发的流程产生一定的影响。
例如:我们所选择的构建的方式,那么你的应用程序的部署的方式,软件开发与测试需要不断的对应用进行持续构建,这些都会受我们持续集成的构建的方案所影响。
有些人可能会想,持续构建很熟悉基本上也就是基于jenkins,没错jenkins确实是目前持续集成中这种流程也比较常见的一种解决方案,不过我们今天并不是仅仅单纯的讲jenkins,而是想再引入另外一个比较新颖也比较火的概念,也就是docker。
对于热点概念比较熟悉的朋友对docker并不陌生,这几乎是近期最热点的一门技术之一。
那么docker不像jenkins,docker场景应用是非常广泛的。
例如:我们常用的微服务或者容器化部署,实际上都离不开docker或者说都离不开容器。
可能大家在平时的工作中或者学习中对docker也非常感兴趣,想要去应用,但是有些同学可能没有找到这种合适的入手点去试验它,没有找到一种合适的方式去应用它。
我们今天在这里主要与大家分享如何将Docker与持续集成结合起。
来讲讲基于Jenkins+Docker+GIT把这几项结合在一起的配置部署的一种方案,我们想搭建一套能利用jenkins一个传统,同时也是主流的集成构建工具,同时我们又能引入一个Docker轻量级容器部署的方案。
一方面:我们想把传统的持续集成的工具应用好。
另外一方面:我们也可以整合一些热点的技术融合到一起,从而达到提升工作效率的目的。
不管是docker还jenkins目前在很多的IT企业中应用都非常广泛,jenkins作为一款非常经典的集成发布集成构建的工具,它凭借着自身的这种特别强大的功能,还是得益于它良好的设计。
然后再结合众多的插件,使得jenkins在实际生产过程中几乎能够实现你在工程持续构建的多种内容,而docker目前也是非常火热,作为业内一个最火的容器解决方案之一,将两者结合起来会带来什么样效果呢?
这也是我们今天需要去探索和展现的一些重点,为什么想要将docker与jenkins结合起来,在我们设计的场景里,就是想利用jenkins这种强大的CI工具的特性,我们能够获得这种持续构建的便利,这也是jenkins作为传统的一种应用场景。
但是传统构建的应用场景一般跑在独立的服务器上或者运行在虚拟机里,相对来说还是比较笨重,尽管说我们记住jenkins这样强大的工具,我们最终也能够实现一键部署与自动化环境的搭建执行,但在资源方面的这个开销和管理维护这种复杂度还是会存在一些不如意,那么容器呢它比虚拟机也好或者服务器也好,要轻量得多占用资源又少,部署即快又方面,做事效率高。
如果我们把服务存放在容器中运行,然后我们通过jenkins来把这个工程部署到容器里面,这样我们的服务就能够实现轻量化,这就是我们基于docker来管理我们jenkins的资源然后基于jenkins来创建docker然后来管理这个docker容器。
环境搭建实现整体流程详解图如下:
流程详解过程分析:
首先,我们从开发开始将开发完成的代码提交到git服务器之后,版本管理工具我们使用GIT,可以在jenkins中进行工程的构建,通过调用我们的shell Script的方式,触发docker管理镜像和容器的相关操作,然后把我们的工程部署到docker容器中去,然后把这个docker容器作为一个镜像启动起来。
这样等部署完成之后开发与测试就可以通过浏览器等方式来直接访问我们的项目工程,在这整个流程中,除了docker这一部分之外,其它的流程都是一种传统的jenkins部署持续集成构建的一种传统流程,我们在部署与发布基本上都是在jenkins中来完成 。
Docker在这个过程中更多是给我们提供一种支撑,我们在jenkins中执行编译,编译完成之后的工程将代码打包发布到docker里面,然后在docker中运行我们的服务,这所有的过程都是基于jenkins强大的功能来实现的,这所有的流程操作都可以进行跟踪的。
在我们设计的这个场景里面,我们希望至少需要三类服务器。
首先,是需要提供一台Git服务的服务器,这里可以使用互联网上提供的github等相关版本管理工具服务。
其次,需要一台运行Jenkins服务的服务器(Tomcat)。
再次,一台或若干Docker宿主机报备器主要用来提供服务运行的环境,可以是一台或者多台,主要为用户提供服务运行的环境。
结束语:基于对Docker结合Jenkins的应用今天咱们就讲解到这里,有些同学在公司有接触或者应用过这些技术相对比较容易接受,有些同学可能仅仅只听过没有应用过。
关于Docker的一些基本概念与整理运作流程我们今天就讲到这里,只要大家认真努力阅读上文都能详细理解,如何任何问题欢迎留言。