1. 程式人生 > >jenkins+Docker+maven專案持續構建及docker化

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、即可開始構建