一、前言
1、本文主要內容
將在項目中實際使用到的相關東西整理記錄一波,同時可以方便其他同學在使用到的時候參考一下(自己也備忘),有不對的地方,歡迎指出~~
- Docker部署SpringBoot 項目通用Dockerfile文件、腳本
- Jenkins新建任務圖文詳解
3、本文環境信息
服務器
操作系統 硬件配置 IP 說明 CentOS 7 4C16G 10.133.28.54 部署Jenkins Jenkins版本
Jenkins安裝包有兩種,一種是LTS,一種是Weekly。LTS是穩定版,Weekly每周會更新一次,一般使用LTS就行了,最新版的LTS:2.235.2
Docker
Docker Engine - Community : 19.03.8
Spring Boot應用
使用的是版本2.2.5.RELEASE,當然只要是一個Spring Boot應用都可以
GitLab
本文演示使用的是社區版12.7.6 ? 也可以使用GitHub 、Gitee或者SVN都可以
二、準備工作
1、Docker 環境安裝
在Linux服務器上安裝Docker環境,具體可以參考:Docker | 在CentOS上安裝Docker Engine
2、Jenkins 環境安裝
在Linux服務器上安裝Jenkins,具體可以參考:CentOS下使用Docker安裝Jenkins及配置詳細教程
3、GitLab 環境安裝
在Linux服務器上安裝GitLab,具體可以參考:GitLab持續集成發布之一:CentOS7下GitLab安裝部署教程
三、打包及部署
?一般微服務項目都會有很多個服務,本文以cloud-gateway 微服務的網關module為例來演示
?
1、打鏡像Dockerfile及運行腳本
目前微服務盛行,既然是微服務,大部分都會采用Docker容器部署,這樣可以非常快捷的擴容,所以本文也會從打鏡像,鏡像啟動,鏡像推送等方面詳細的介紹下。
通用版Dockerfile
FROM java:8# 以下4行配置可以去掉,在此展示下,只因項目中與SAP采用Jco3直連的方式,相對應的項目部署環境也需要配置JCO3的環境,ADD libsapjco3.so /home/sap/libsapjco3.soADD sapjco3.jar /home/sap/sapjco3.jarENV LD_LIBRARY_PATH /home/sapENV CLASSPATH $CLASSPATH:$LD_LIBRARY_PATH/sapjco3.jarADD cloud-gateway-1.1.0-SNAPSHOT.jar /app.jarEXPOSE 8001ENTRYPOINT ["java", "-jar","/app.jar"]
?生產環境,可以根據需求在
?ENTRYPOINT
命令行中增加JVM
相對應參數的設置
執行腳本
測試環境一般情況下,都是在一臺服務器,啟動多個Docker容器,此處將
spring.profile.active
參數提取出來了,可以做到真正的一包多環境使用,可以參考以下腳本:
#!/usr/bin/env bashgroup_name='mva-cloud'app_name='cloud-gateway'app_version='1.1.0-SNAPSHOT'profile_active='test'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 build -t ${group_name}/${app_name}:${app_version} .echo '----build image----'# 啟動Docker鏡像docker run -p 9527:9527 --name ${app_name} \-e 'spring.profiles.active'='prod' \-e TZ="Asia/Shanghai" \-v /etc/localtime:/etc/localtime \-v /home/zkgc/mydata/cloud/${app_name}/logs:/home/zkgc/logs/${app_name} \-d ${group_name}/${app_name}:${app_version}echo '----start container----'
?生產環境,一般情況下都需要將打好的鏡像推送到docker私有倉庫中,所以說每一版都需要有版本號的變化,可以考慮使用時間戳動態版本號,docker私有倉庫相關介紹可以參考:Docker | 在CentOS上搭建Docker私有倉庫Registry-v2
?
將
Dockerfile
、運行腳本run.sh
放到服務器的/home/cloud/test-deploy/cloud-gateway
目錄,后續通過Jenkins打包的Jar 文件也需要拷貝到該目錄,如果需要配置SAP的環境,那對應的jar、so文件都需要拷貝到這一個目錄,這樣在打鏡像的時候,就會把相對應的環境打到鏡像里面。
2、Jenkins創建任務
新建一個自由風格的任務
配置源碼管理
我這邊使用的是GitLab,當然你們使用Github、Gitee都是可以的。
增加一個訪問GitLab的用戶名密碼
配置構建
在構建這個模塊下呢,我們主要配置使用Mavenn來進行打包、配置通過SSH執行命令并傳輸文件等
想發版的時候,點一下立即構建,Jenkins就會自動從代碼倉庫拉取最新代碼,進行打包,打鏡像,啟動鏡像一鍵完成了。
另外,前臺代碼也是可以通過Jenkins來進行一鍵打包部署的,與后臺的稍微有些不同,后續我會單獨寫一篇文章,來演示下如何進行前臺代碼的一鍵打包部署,前臺代碼使用的是VUE進行演示。
先打包使用到的通用module。點擊
增加構建步驟
-->調用頂層Maven目標
?
說明下:我這個演示項目已經把一些通用的東西抽取出來了,而gateway 是依賴這些通用的module,所以我這會先將這些通用的進行打包,防止在打包gateway的時候,找不到對應的jar包
?配置打包
cloud-gateway
,點擊增加構建步驟
-->調用頂層Maven目標
,具體配置項參考下圖:配置執行上面準備好的腳本。點擊
增加構建步驟
-->Send files or execute commands over SSH
選項,這個是將打完包的jar包拷貝到指定服務器的指定目錄,完成后執行相對應的腳本,具體如下圖:?
這個地方,需要提前配置好服務器的憑證信息(在公眾號的其他文章有教程,可以翻一下),服務器需要開啟ssh訪問,我這里是Jenkins與測試服務器不在一起,如果在一起的話,就可以選擇只運行腳本命令的那個構建選項即可。
?點擊保存,這樣一個任務就創建完成了。
覺得有用就順手轉發、點贊、在看三連走一波,非常感謝!
長按/掃碼關注我吧,會找到你想要的……
?
???喜歡就點個在看吧