jenkins+Docker+maven專案持續構建及docker化
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、即可開始構建