在 docker:(3)docker容器掛載宿主主機目錄 中介紹了運行docker時的一個重要命令 -v
sudo docker run -p 8822:8080 --name tomcat_xiao_volume -v /home/xiaochangwei/test:/usr/local/tomcat/webapps xiaochangwei/tomcat:v1
將容器內部目錄和宿主主機目錄進行關聯,這樣操作宿主主機關聯目錄時,就會同步關聯操作了容器對應目錄,
這在發布war包時尤其有用, 容器啟動后就無需再關心了,只需要將需要更新的war包拷貝到關聯的目錄就可以了
本篇文章就是為了簡化拷貝工作
docker:(4)利用WebHook實現持續集成 中實現了git提交代碼觸發jenkins自動打包並部署到遠程tomcat中,這里講怎么部署到docker中
首先已經得到war包了,下面要做的就是怎么把war包拷貝到docker容器關聯的宿主主機對應目錄
jenkins提供了插件Publish over SSH 官方介紹https://wiki.jenkins.io/display/JENKINS/Publish+Over+SSH+Plugin
操作步驟:
1.安裝插件 Publish over SSH
2.在系統管理-系統設置最后設置ssh server信息 如下:
解釋下:
Passphrase : 主機的登錄密碼
Hostname : 主機的地址
Username :主機的登錄賬號
Remote Directory:根路徑 (注意后續的路徑都是相對這個路徑來操作的,最好設置為 /)
配置好后,點擊測試配置,顯示成功后保存關閉
3. 在具體項目中勾選 Send files or execute commands over SSH after the build runs 並配置如下
解釋下參數:
Name : 就是上一步配置的server名字,下拉選擇
source File :就是war包路徑 jenkins打包后再target目錄下
prefix : 就是war包路徑的前綴,去掉前綴后就是war包了
Remote directory: 需要放到遠程服務器的目錄,
需要注意的是,這里是相對於第二步中Remote Directory的路徑, 比如第2步我設置的是/root 如果這里我這只為 /package 那么對應的目標路徑就是/root/packages
這里問了更好的區分,我使用了時間戳,這就需要勾選上 Remote directory is a date format,並且非時間格式的地方都需要用引號包含起來
比如我這里設置的是 '/packages/'yyyyMMddHHmmss-${BUILD_NUMBER} 最后的${BUILD_NUMBER}是jenkins變量,就是打包次數,和last buid對應
Exec command: 是需要執行的命令,可以設置任何linx可以執行的命令或者shell腳本
設置好后保存,打包測試:
根據控制台輸出,可以看出設置的shell命令也執行了,而且提示文件也上傳到配置的服務器上了(后的137錯誤是因為我的阿里雲服務器內存太小,自動部署到tomcat上失敗了,這個與本次講的無關,請忽略)
注意此次打包號為 #27
到服務器上對應目錄看下上傳情況
證明war包已經上傳到了對應的目錄了
這樣 就可以設置對應的目錄和docker容器關聯后,實現war包的自動更新發布和備份了,這里加了時間戳適合於備份,單純的發布就不要加時間戳了