cover
Docker可以说是目前比较火的一门技术了,它能帮我们从各种复杂的编译、打包、部署,各种基础环境配置中解脱出来,做到真正的开箱即用。

下面介绍如何将我们的项目制作成docker镜像,实现快速部署。

手动打包

1,编译war包
Maven项目可通过 mvn packge 命令编译成war包。 2,编写Dockerfile
Dockerfile能告诉docker怎么样将我们的项目打包成镜像,在war目录创建Dockerfile文件:


FROM tomcat:7-jre7
RUN rm -rf /usr/local/tomcat/webapps/ROOT/
ADD rest.api.war /usr/local/tomcat/webapps/ROOT/
WORKDIR /usr/local/tomcat/webapps/ROOT/
RUN unzip rest.api.war



3,生成镜像并运行
接着执行命令docker build -t shaofan/api . 生成镜像

full-img
这时查看镜像已经有我们刚才生成的镜像shaofan/api,我们运行它:docker run -it --rm -p 8888:8080 shaofan/api full-img

接着访问http://ip:8888即可访问我们的应用 full-img

其实多数时候Dockerfile是包含在我们项目中的,不需要每次都写

集成Jenkins以及Docker插件实现持续集成

前面说的手动打包实在是太Low了,效率太低,我们可以借助强大的Jenkins实现DI功能,自动打包我们的项目,生成镜像,运行镜像等等

这时就要用到Jenkins的Docker插件,由于Docker插件是基于docker rest api来实现docker操作命令,所以我们需要在docker宿主机上打开tcp监听。

编辑/etc/default/docker 文件,加入DOCKER_OPTS="-H=unix:///var/run/docker.sock -H=0.0.0.0:6732"

以下是以ubuntu为例,例如centos位置有所区别,具体查看官网,如果存在DOCKER_OPTS或者unix:xxxx只需加入-H=0.0.0.0:6732就行,不要盲目乱加,根据实际情况来

full-img
service docker restart 重启docker后,我们访问下看看有没有成功
full-img

接下来我们安装jenkins:


docker run -d -p 8080:8080 -p 50000:50000 -v /var/jenkins:/var/jenkins_home  --name jk jenkins

接着我们在jenkins中安装Git plugin 和 Docker build step plugin 这两个插件 full-img

然后我们还需要在jenkins的系统设置中把刚才配置的docker rest api配置上 full-img
我们就可以开始新建一个Maven项目了,具体配置如下 full-img
full-img
full-img
最后我们只需要在jenkins中构建一下我们的项目,就能通过我们配置的8888端口访问应用了。

其实这种方式本质上就是把手动打包中的命令用docker插件分解成一条条的命令来执行,如果你jenkins是安装到宿主机上,并且装有docker环境,完全可以自定义shell命令来部署,并且配置私有仓库,把镜像推送到私有仓库中,这种方式不需要依赖docker插件,更加灵活。

支付宝扫码打赏 微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章

杨少凡's Picture
杨少凡

殿堂级渣洼工程师,现居重庆,目前就职于人和集团电商部。

Chongqing「重庆」 http://shaofan.org