docker:(5)利用docker -v 和 Publish over SSH插件實現war包自動部署到docker


在 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包的自動更新發布和備份了,這里加了時間戳適合於備份,單純的發布就不要加時間戳了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM