背景
微服务架构下,微服务在带来良好的设计和架构理念的同时,也带来了运维上的额外复杂性,尤其是在服务部署和服务监控上。单体应用是集中式的,就一个单体跑在一起,部署和管理的时候非常简单,而微服务是一个网状分布的,有很多服务需要维护和管理,对它进行部署和维护的时候则比较复杂。
下面从Dev的角度来看一下Ops的工作。从Dev提交代码,到完成集成测试的一系列步骤如下:
- 首先是开发人员把程序代码更新后上传到Git,然后其他的事情都将由Jenkins自动完成。
- 然后Git在接收到用户更新的代码后,会把消息和任务传递给Jenkins,然后Jenkins会自动构建一个任务,下载Maven相关的软件包。下载完成后,就开始利用Maven Build新的项目包,然后重建Maven容器,构建新的Image并Push到Docker私有库中。
- 最后删除正在运行的Docker容器,再基于新的镜像重新把Docker容器启动,自动完成集成测试。
整个过程都是自动的,这样就简化了原本复杂的集成工作,一天可以集成一次,甚至是多次。
本文主要关注的第二步,作为Dev使用Maven插件构建Docker镜像。
过程步骤
环境
笔者的电脑系统是MacOS,在进行下面的步骤之前,先具备一下条件:
- Docker Registry
- Maven(3.5.0)
- JDK(1.8.0_131)
- Docker for Mac (17.09.0-ce-mac35)
Maven 和JDK 就不用过多多了,必须具有的。Docker Registry是私有的hub,mac上装好dock