Jenkins集成Docker鏡像實現自動發佈

1. 思路&流程java

Jenkins集成Docker鏡像實現自動發佈與Jenkins發佈mavne項目思路同樣整體流程 爲:
Jenkins 拉去遠端源碼 —— gitl
實現應用打包 —— jenkins本地
把應用程序打包進Docker鏡像 —— Dockerfile
鏡像上傳到Docker私有倉庫 —— shell或者 Docker相關的Jekins插件
刪除老的Docker容器,運行新的Docker容器 —— shell腳本git

2. 環境準備docker

Jenkins java maven Docker git git-Jenkins插件
配置Jenkins
Git倉庫能夠開啓鉤子功能實現push代碼後自動觸發Jenkins構建功能,如須要能夠在git倉庫中開啓此功能。
新建項目 選擇mavan風格項目或者自由風格項目(這裏使用自由風格)shell

 

3. 配置Jenkins構建觸發器tomcat

 

說明1:觸發遠程構建 (例如,使用腳本) 這個選項就是上面提到配合git倉庫的鉤子功能實現代碼PUSH後Jenkins收到通知自動觸發構建項目的動做 說明2:Poll SCM日程表 定時檢查源碼變動,若是有更新就克隆下最新code下來,而後執行構建動做 

 

5分鐘檢查一次該項目分支是否有變更,若是有就拉去最新code執行構建動做 注:構建觸發器這裏咱們不作任何選擇,這裏只是介紹這兩週功能,若有須要自行實現。 

4. 構建日誌輸出bash

 

查看docker本地倉庫maven

鏡像已經存在
工具

容器已經在運行了ui

項目中的Dockerfile

Git倉庫的項目當中須要存放Dockerfie文件,用於打包應用到鏡像裏面spa

5. Dockerfile內容以下:

爲了不構建過程過多時間執行過長,Dockerfile文件只作了一件事就是把Jenkins打包好的應用文件添加進容器裏。其餘所需的環境和操做都將在基礎鏡像上完成,提升構建效率。
注:這裏的 FROM java6是須要存在在Docker本地倉庫上的鏡像,若是不存在Jekins在執行構建過程當中回去Docker Hub上拉取對應鏡像,若是沒有則會報錯。

6.基礎鏡像 Dockerfile

Java6的鏡像是從這裏由來,添加了tomcat以及JAVA環境變量 構建Docker鏡像這裏只作一下簡單說明

Jenkins構建後操做
Jekins可使用相關的Docker插件來實現此功能,但因爲外網被牆安裝困難,這裏採用Execute Shell方式實現,也比較簡單易於後期維護。

imagesid=`docker images|grep -i docker-test|awk '{print $3}'` project=/root/.jenkins/workspace/Docker if ! -n "$imagesid";then echo $imagesid "is null" else docker rmi $imagesid -f fi cd $project docker build -t docker-test . if docker ps -a|grep -i docker;then docker rm -f docker fi docker run -it -d -p 8099:8080 --name docker docker-test 

注:這裏的殺掉老的容器和刪除舊的容器 grep的都是經過容器的名稱所匹配的,因此再啓動啓動容器的時候要指定容器名稱 –name,不然就是啓動失敗。

7. 頁面訪問驗證

我Docker鏡像裏的應用就是一個index頁面,容器訪問成功。

8. 擴展

- 多節點升級

以上只是針對單節點本機Docker的打包部署方式,如須要多借點部署,不用屢次編譯構建,只需執行一次構建操做,把鏡像上傳到企業內部私有倉庫,經過ansibles 實現多節點部署。

- Docker集羣環境的部署方式

使用kubernets集羣管理工具經過Deployment(1.2版本新增)文件實現滾動升級容器(等同於應用的部署)

相關文章
相關標籤/搜索