天天看點

Docker+Jenkins+GIT+Tomcat實戰持續化內建一、概要二、環境部署三、Jenkins配置四、啟動多個容器

開發将源碼上傳到github倉庫,通過jenkins持續內建引擎結合git工具,将源碼拉取到jenkins伺服器,通過工具maven在本地講源碼編譯打包成war包,在ssh到Docker主控端,通過執行腳本生成制作自定義的Dockerfile,最終執行生成images,并啟動container,即啟動了包含war包的tomcat,即可實作對外提供web服務。

主機名

IP位址

作用

Docker-server

172.20.6.20

Docker主控端

Jenkins-server

172.20.6.22

Jenkins伺服器

建立ssh釋出使用者及目錄
上傳腳本

将腳本上傳到 /data/dockerfiles/scripts,命名為devops,此名稱可自定義,但是之後在配置jenkins執行ssh指令時候的腳本名稱需要一緻。由于腳本内部的分發路徑是寫的絕對路徑,是以需要講目錄為固定,也可以根據實際修改。此腳本author:junsansi,可以參考其進行修改。

Docker主控端擷取tomcat鏡像

<code>docker pull docker.io/tomcat</code>

使用<code>docker images</code>檢視tomcat鏡像

Docker+Jenkins+GIT+Tomcat實戰持續化內建一、概要二、環境部署三、Jenkins配置四、啟動多個容器

此時Docker主控端就已經配置完畢。

登入Jenkins的WEB界面

系統管理---系統設定---Publish over SSH---增加SSH Server

添加SSH Server可以使用密鑰形式添加,也可以直接使用使用者名密碼, 此處使用使用者名密碼,選擇

Use password authentication, or use a different key,即docker使用者的密碼,進行登入釋出,之前已經講<code>/data/dockerfiles</code>目錄的屬主屬組更改為docker,确認Jenkins伺服器使用docker使用者可以正常在此目錄下進行後續操作。

Docker+Jenkins+GIT+Tomcat實戰持續化內建一、概要二、環境部署三、Jenkins配置四、啟動多個容器
Docker+Jenkins+GIT+Tomcat實戰持續化內建一、概要二、環境部署三、Jenkins配置四、啟動多個容器

為保證Jenkins伺服器的磁盤有充足的空間,在選中丢棄舊的建構-&gt;保持建構的最大個數為10個

Docker+Jenkins+GIT+Tomcat實戰持續化內建一、概要二、環境部署三、Jenkins配置四、啟動多個容器

在真實開發環境中,成員直接互相協助,GIT是多分支的,考慮到分支管理,需在此選中參數化建構-&gt;選擇Git Parameter-&gt;定義名稱為release_branch,是以選擇參數類型為Branch:如果自己發現devops腳本可以看到裡面是調用了此參數進行選擇建構的分支。

同時建立考慮到建立Docker的名稱,此時需要給後續建立的docker images以項目的名稱命名。

Docker+Jenkins+GIT+Tomcat實戰持續化內建一、概要二、環境部署三、Jenkins配置四、啟動多個容器

源碼管理選擇git,填入倉庫url:[email protected]:redhatxl/zrlog.git

Docker+Jenkins+GIT+Tomcat實戰持續化內建一、概要二、環境部署三、Jenkins配置四、啟動多個容器

此時發現會出現報錯資訊,因為此倉庫為我的私有倉庫,需要配置Credentials,點開add, Add Credentials的 Kind選擇SSH Username with private key,Username選擇之前在github上傳的公鑰使用者的使用者名,此次為root,Private Key為jenkins伺服器登入github的本地私鑰,檢視私鑰<code>cat /root/.ssh/id_rsa</code> 複制粘貼到Key區域,完成添加。此時可以發現報錯已經消失。

Docker+Jenkins+GIT+Tomcat實戰持續化內建一、概要二、環境部署三、Jenkins配置四、啟動多個容器

在Branches to build子產品需要填寫之前我們參數話的變量,在此引用<code>$release_branch</code>

Docker+Jenkins+GIT+Tomcat實戰持續化內建一、概要二、環境部署三、Jenkins配置四、啟動多個容器

在build的Goals and options添加maven建構參考及指令:<code>clean install -D maven.test.skip=true</code>

Docker+Jenkins+GIT+Tomcat實戰持續化內建一、概要二、環境部署三、Jenkins配置四、啟動多個容器

增加建構後步驟---選擇Send build artifacts over SSH

SSH-Server name選擇Docker主控端

Transfers中填寫Source files:target/*.war

Remove prefix:target/

Remote directory:/war/$project_name,即在遠端/data/dockerfiles下的war目錄(/data/dockerfiles/war/docker01-tomcat-zrlog)

Exec command:/data/dockerfiles/scripts/devop.sh $project_name zrlog $release_branch 8888 8080

即jenkins伺服器ssh到docker主控端之後執行的腳本指令,執行/data/dockerfiles/scripts/devop.sh腳本,此腳本需要傳入5個參考,

project_name:項目名稱,即docker生成images的名稱

zrlog:即項目名稱

release_branch:在git上送出的分支,此處我們隻有master分支

兩個端口,前一個端口及主控端的監聽端口,後一個端口及映射到docker容器内部的端口,在此處使用的為tomcat,預設的為8080端口。

Docker+Jenkins+GIT+Tomcat實戰持續化內建一、概要二、環境部署三、Jenkins配置四、啟動多個容器

注意:再次可以添加多個server,即實作叢集,可以講web伺服器為無狀态,将日志檔案挂載到本地實體磁盤以實作日志監控即資料持久化存儲。

添加增加建構後操作,選擇Editable Email Notification,利用插件郵件來發送通知。

可以根據需求自定義郵件主題與内容,此處添加資訊接受人,由于全局配置了always,在進階設定内,填寫接受人郵箱。

Docker+Jenkins+GIT+Tomcat實戰持續化內建一、概要二、環境部署三、Jenkins配置四、啟動多個容器

建立完畢後點選應用并儲存。

選擇Build with Parameters,然後在右邊release_branch内選擇需要執行的github上的分支,此處為master,同理選擇 project_name,為docker images的name可以選擇自己添加自定義的名字,點選開始建構

Docker+Jenkins+GIT+Tomcat實戰持續化內建一、概要二、環境部署三、Jenkins配置四、啟動多個容器

檢視Console Output

Docker+Jenkins+GIT+Tomcat實戰持續化內建一、概要二、環境部署三、Jenkins配置四、啟動多個容器
Docker+Jenkins+GIT+Tomcat實戰持續化內建一、概要二、環境部署三、Jenkins配置四、啟動多個容器

檢視郵件通知

Docker+Jenkins+GIT+Tomcat實戰持續化內建一、概要二、環境部署三、Jenkins配置四、啟動多個容器

登入docker主控端檢視images與container

Docker+Jenkins+GIT+Tomcat實戰持續化內建一、概要二、環境部署三、Jenkins配置四、啟動多個容器

網頁測試

Docker+Jenkins+GIT+Tomcat實戰持續化內建一、概要二、環境部署三、Jenkins配置四、啟動多個容器

至此利用jenkins簡單的實作了講github上的源碼拉去到jenkins伺服器本地,利用maven編譯生成war包并分發到docker主控端,執行腳本生成dockerfile,并啟動容器,最終郵件通知。

在配置jenkins的ssh後的指令我們可以添加多個server進而實作分布式,同時我們也可以對在一台主機上通過區分端口号來生成多個images并啟動多個不通端口的container

在General的參數化建構過程中增加第三個參數<code>proxy_port</code>可以設定為docker主控端的本地監聽端口進而實作多端口多執行個體

Docker+Jenkins+GIT+Tomcat實戰持續化內建一、概要二、環境部署三、Jenkins配置四、啟動多個容器

在ssh指令中調用

Docker+Jenkins+GIT+Tomcat實戰持續化內建一、概要二、環境部署三、Jenkins配置四、啟動多個容器

在建構開始時可以定義不同的images對應不通的端口

Docker+Jenkins+GIT+Tomcat實戰持續化內建一、概要二、環境部署三、Jenkins配置四、啟動多個容器

檢視啟動後的容器

Docker+Jenkins+GIT+Tomcat實戰持續化內建一、概要二、環境部署三、Jenkins配置四、啟動多個容器

注意:如果有特殊需求,例如釋出php代碼或其他可以自行對腳本進行修改,可以根據需求定義多個參數靈活使用。

本文轉自 KaliArch 51CTO部落格,原文連結:http://blog.51cto.com/kaliarch/2051998,如需轉載請自行聯系原作者

繼續閱讀