“ 基础的设施我们已经搭建好了 下面我们就可以开始测试一下
1)这里我新建了一个javaEE maven 项目 很简单写了一个 index.html
http://onexin.iyunv.com/source/plugin/onexin_bigdata/file:///C:/Users/lx/AppData/Local/Temp/enhtmlclip/115028_qPVS_1022411.png
2)在 gitlab新建一个docker-hello-world 项目仓库
http://onexin.iyunv.com/source/plugin/onexin_bigdata/file:///C:/Users/lx/AppData/Local/Temp/enhtmlclip/115104_pWZM_1022411.png
3) 编写打包镜像的Dockerfile 和部署到集群的 脚本 (放在当前项目里面就可以了)
Dockerfile
很简单的步骤 把编译好的war 放入镜像就可以了
这里使用的是 官方 tomcat 镜像
?123FROM tomcat:8-jre8RUN rm -rf /usr/local/tomcat/webappsADD ./target/ROOT.war /usr/local/tomcat/webapps/ROOT.war build.sh 部署使用的脚本
?12345678910111213141516171819202122232425262728293031#!/bin/bash #build in jenkins # 你的docker 仓库的地址 REG_URL=XXX #你的swarm manage 节点的地址SWARM_MANAGE_URL=xx:2376 #根据时间生成版本号TAG=$REG_URL/$JOB_NAME:`date +%y%m%d-%H-%M` #使用maven 镜像进行编译 打包出 war 文件 (其他语言这里换成其他编译镜像)docker run --rm --name mvn -v /mnt/maven:/root/.m2 \ -v /mnt/jenkins_home/workspace/$JOB_NAME:/usr/src/mvn -w /usr/src/mvn/\ maven:3.3.3-jdk-8 mvn clean install -Dmaven.test.skip=true #使用我们刚才写好的 放在项目下面的Dockerfile 文件打包 docker build -t $TAG $WORKSPACE/.docker push $TAGdocker rmi $TAG # 如果有以前运行的版本就删了 if docker -H $SWARM_MANAGE_URL ps -a| grep -i $JOB_NAME; then docker -H $SWARM_MANAGE_URL rm -f $JOB_NAMEfi #运行到集群docker -H $SWARM_MANAGE_URL run -d -p 80:8080 --name $JOB_NAME $TAG 4)在jenkins 上新建一个docker-hello-world 项目
选择自由风格即可
http://onexin.iyunv.com/source/plugin/onexin_bigdata/file:///C:/Users/lx/AppData/Local/Temp/enhtmlclip/141119_KoBm_1022411.png
设置一下git仓库地址
http://onexin.iyunv.com/source/plugin/onexin_bigdata/file:///C:/Users/lx/AppData/Local/Temp/enhtmlclip/151810_yP3y_1022411.png
设置一下触发器 为了方便起见这里设置 每分钟拉取一下 也可以设置一下 gitlab hook
同时设置一下 构建要执行的脚本 就执行我们刚才写好的脚本即可
http://onexin.iyunv.com/source/plugin/onexin_bigdata/file:///C:/Users/lx/AppData/Local/Temp/enhtmlclip/141119_Fgjq_1022411.png
5) 那么开始 推送到我们的仓库
然后查看jenkins console 就可以看到执行的过程了 已经看到 已经执行成功了
http://onexin.iyunv.com/source/plugin/onexin_bigdata/file:///C:/Users/lx/AppData/Local/Temp/enhtmlclip/143302_L3sZ_1022411.png
访问一下 已经部署到集群了 (关于集群的负载均衡 部署这里就不讲了)
http://onexin.iyunv.com/source/plugin/onexin_bigdata/file:///C:/Users/lx/AppData/Local/Temp/enhtmlclip/143509_dfs3_1022411.png
6)更新版本
修改一下index.html 然后 再次推送
http://onexin.iyunv.com/source/plugin/onexin_bigdata/file:///C:/Users/lx/AppData/Local/Temp/enhtmlclip/143642_VMKK_1022411.png
等待2~3分钟后我们就可以看到已经重新部署成功了 就是怎么简单
http://onexin.iyunv.com/source/plugin/onexin_bigdata/file:///C:/Users/lx/AppData/Local/Temp/enhtmlclip/143915_CzSc_1022411.png
问题1 为什么要把war包打包进容器 而不是挂载新的war包
解答:docker的理念是一个整体 一个整体的运行环境而不是单纯的war包 更适合整体迁移
问题2:这样镜像不会很大么 下载会不会很不方便
解答:因为docker的镜像是多层依赖的所以 除了第一次下载慢一点以后都会复用之前相同的层
所以下载的是不同的 部分 在本实例中只是war包的部分
” |