1、安装配置Jenkins服务和Docker服务(不赘述)
2、在Jenkins依托的宿主机上创建一个构建脚本(/home/skyform/项目名/rollingupdate.sh)
3、编写脚本:
#!/usr/bin/sh
dockerHost=IP:端口号
imageName=xxxx
imageTag=v1
containerName=xx
ports1=xxxx:xxxx
ports2=xxxx:xxxx
ports3=xxxx:xxxx
dockerfilePath=/var/lib/jenkins/workspace/Jenkins项目名/Dockerfile (Dockerfile已经由项目人员编号并上传到了git)
warPath=/var/lib/jenkins/workspace/Jenkins项目名/部署的maven项目文件/target/项目名.war
#在Jenkins项目目录下创建build文件并将war包和Dockerfile拷贝进去
cd /var/lib/jenkins/workspace/Jenkins项目名/
rm -rf build
mkdir build
docker login harbor:5000 -uadmin -ppassword
cp $dockerfilePath ./build/
cd build
cp $warPath .
#删除部署的物理机上已有的同名容器(保证以后的容器都是最新的git内容)
docker -H $dockerHost rm -f $containerName
#构建镜像
docker build -t $imageName:$imageTag .
#删除镜像仓库里的镜像并将最新的镜像push上去
curl -uadmin:password -IX DELETE http://harbor/api/repositories/skyform/rms/tags/v1
docker push $imageName:$imageTag
#创建容器并清除所有tag为<none>的镜像
docker -H $dockerHost pull $imageName:$imageTag
docker -H $dockerHost run -d --restart=always -p $ports1 -p $ports2 -p $ports3 --hostname $containerName --name $containerName $imageName:$imageTag
docker rmi -f $(docker images | grep "<none>" | awk "{print \$3}")
4、在Jenkins上新建一个maven项目并配置好git地址、触发器、build等(详细的配置过程可参考我的另一篇文章:http://blog.csdn.net/juixg/article/details/78059980)
5、在pre step中加入Execute shell方式并输入sh .home/skyform/项目名/rollingupdate.sh运行脚本
6、即可开始构建