半自動化部署SpringBoot+Jenkins自動化部署技巧,遠端部署同樣適用,附通用自動化指令碼!本文將從半自動化部署講起,到自動化部署,講解一套生產環境切實可用的自動化部署方案!
之前寫過的SpringBoot應用打包Docker映象都是通過Maven外掛來實現的,由於遠端伺服器需要開發2375埠,存在一定的安全隱患。這次介紹另一種方法,使用DockerFile+Jar+自動化指令碼的形式來部署。由於需要一定的手動操作,我把它稱之為半自動化部署。
DockerFile主要是定義了如何將Jar包打包成Docker映象,具體內容如下。
自動化指令碼# 該映象需要依賴的基礎映象FROM java:8# 將當前目錄下的jar包複製到docker容器的/目錄下ADD mall-tiny-jenkins-1.0-SNAPSHOT.jar /mall-tiny-jenkins-1.0-SNAPSHOT.jar# 宣告服務執行在8088埠EXPOSE 8088# 指定docker容器啟動時執行jar包ENTRYPOINT ["java", "-jar","/mall-tiny-jenkins-1.0-SNAPSHOT.jar"]# 指定維護者的名字MAINTAINER macro
可以作為通用指令碼來使用的模板指令碼,只需改變其中的一些引數即可,具體執行流程為:停止舊服務->刪除舊容器->刪除舊映象->打包新映象->執行新映象。
#!/usr/bin/env bash# 定義應用組名group_name='mall-tiny'# 定義應用名稱app_name='mall-tiny-jenkins'# 定義應用版本app_version='1.0-SNAPSHOT'# 定義應用環境profile_active='qa'echo '----copy jar----'docker stop ${app_name}echo '----stop container----'docker rm ${app_name}echo '----rm container----'docker rmi ${group_name}/${app_name}:${app_version}echo '----rm image----'# 打包編譯docker映象docker build -t ${group_name}/${app_name}:${app_version} .echo '----build image----'docker run -p 8088:8088 --name ${app_name} \\--link mysql:db \\-e 'spring.profiles.active'=${profile_active} \\-e TZ="Asia/Shanghai" \\-v /etc/localtime:/etc/localtime \\-v /mydata/app/${app_name}/logs:/var/logs \\-d ${group_name}/${app_name}:${app_version}echo '----start container----'
下面講下自動化腳本里面值得注意的地方:
結合Jenkins自動化部署Publish Over SSH之前的打包、上傳檔案都是我們手動完成的,其實這些操作也可以讓Jenkins來幫我們實現,有了Jenkins才算得上是真正的自動化部署!
這裡推薦安裝這款Jenkins外掛,它的主要作用是可以通過SSH在不同伺服器之間傳輸檔案和執行命令。比如說我們把Jenkins裝在了測試伺服器上,我們可以使用Jenkins在測試伺服器上從Git倉庫獲取程式碼,然後打成Jar包。打包完成後我們可以通過這個外掛將Jar包傳輸到正式伺服器上去,然後執行正式伺服器上的自動化指令碼,從而實現正式伺服器上的自動化部署。
總結從我寫過的幾篇自動化部署文章中,其實可以看出,令來實現的。Jenkins的自動化部署也是基於這些的,所以要學會自動化部署,Linux命令和Docker命令是必不可少的!
如果大家喜歡我們的文章,歡迎大家轉發,點選在看讓更多的人看到。也歡迎大家熱愛技術和學習的朋友加入的我們的知識星球當中,我們共同成長,進步。