docker打包鏡像上傳_Jenkins | 一鍵打包部署Spring Boot 應用的Docker鏡像

一、前言

1、本文主要內容

將在項目中實際使用到的相關東西整理記錄一波,同時可以方便其他同學在使用到的時候參考一下(自己也備忘),有不對的地方,歡迎指出~~

  • Docker部署SpringBoot 項目通用Dockerfile文件、腳本
  • Jenkins新建任務圖文詳解

3、本文環境信息

  • 服務器

    操作系統硬件配置IP說明
    CentOS 74C16G10.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創建任務

  • 新建一個自由風格的任務

    94197ae27eb1adceb57e2805b899d046.png
  • 配置源碼管理

    我這邊使用的是GitLab,當然你們使用Github、Gitee都是可以的。

    faf7fda5f5c480b90ace823aa298894f.png

    增加一個訪問GitLab的用戶名密碼

    ffd68541ca39caf6a29ed134e50cb60c.png
  • 配置構建

    在構建這個模塊下呢,我們主要配置使用Mavenn來進行打包、配置通過SSH執行命令并傳輸文件等

    想發版的時候,點一下立即構建,Jenkins就會自動從代碼倉庫拉取最新代碼,進行打包,打鏡像,啟動鏡像一鍵完成了。

    另外,前臺代碼也是可以通過Jenkins來進行一鍵打包部署的,與后臺的稍微有些不同,后續我會單獨寫一篇文章,來演示下如何進行前臺代碼的一鍵打包部署,前臺代碼使用的是VUE進行演示。

    • 先打包使用到的通用module。點擊增加構建步驟-->調用頂層Maven目標

      27b716faadffb3ba98538de521b361ce.png
      ?

      說明下:我這個演示項目已經把一些通用的東西抽取出來了,而gateway 是依賴這些通用的module,所以我這會先將這些通用的進行打包,防止在打包gateway的時候,找不到對應的jar包

      ?
    • 配置打包cloud-gateway,點擊增加構建步驟-->調用頂層Maven目標,具體配置項參考下圖:

      90918b63d78b61f7d36133ed3d667cd7.png
    • 配置執行上面準備好的腳本。點擊增加構建步驟-->Send files or execute commands over SSH選項,這個是將打完包的jar包拷貝到指定服務器的指定目錄,完成后執行相對應的腳本,具體如下圖:

      c71ac4eba026ef4253e25afefeeca0cb.png
      ?

      這個地方,需要提前配置好服務器的憑證信息(在公眾號的其他文章有教程,可以翻一下),服務器需要開啟ssh訪問,我這里是Jenkins與測試服務器不在一起,如果在一起的話,就可以選擇只運行腳本命令的那個構建選項即可。

      ?
    • 點擊保存,這樣一個任務就創建完成了。

      773d5fdbe3122e1c4d9873c9629a01ae.png

      覺得有用就順手轉發、點贊、在看三連走一波,非常感謝!

      長按/掃碼關注我吧,會找到你想要的……7737b56f5e3406c1f32fafa43dcf931f.png?

      8af707c061eca556f6e07f42ea93f5b3.png

      ???喜歡就點個在看吧da8e77604fa1d9d1b701ff4f5c89a247.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/397848.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/397848.shtml
英文地址,請注明出處:http://en.pswp.cn/news/397848.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

android 發送短信 廣播 demo,向Android模擬器打電話發短信的簡單方法

在開發android應用程序時,有時候需要測試一下向android手機撥打電話發送短信時該應用程序的反應。譬如編寫一個廣播接收器,來提示用戶有短信收到或者處理短信,就需要向該手機發送短信來進行測試。這里介紹一種簡單的向android模擬器打電話發短…

android 隱藏鍵盤時ui延遲恢復,android 軟鍵盤的顯示與隱藏問題的研究

在android中,常常會和輸入法的軟件鍵盤交互。在Manifest文件中,系統給activity的一個屬性-windowSoftInputMode來控制輸入法的顯示方式。該屬性提供了Activity的window與軟鍵盤的window交互的方式。這里的屬性設置有雙方面的影響:1.軟鍵盤的顯…

天才基本法_《天才基本法》強推!年度神仙小說,看完這本書我竟然愛上了數學...

《天才基本法》——長洱小說文案元寶的書評這個真的是本年度的神仙小說,講述了女主回到少女時代,可以和他一直暗戀的數學天才重來一遍。女主讓男主改變了覺得她碌碌無為的看法,也改變了自己的人生。本書最大的主角其實是數學!天知…

dataTables插件使用

引用文件 <!-- DataTables CSS --> <link rel"stylesheet" type"text/css" href"http://cdn.datatables.net/1.10.7/css/jquery.dataTables.css"><!-- jQuery --> <script type"text/javascript" charset"u…

一行代碼,發送郵件

朋友讓我給他媳婦兒肚子里的孩子想個名字 走的越來越快了&#xff0c;有天看到一個論點關于說地域會影響人的一輩子。其實想想的確有這個理兒&#xff0c;這使我想起來每天早上擠地鐵的時候&#xff0c;其中有一個A站的人總是特別彪悍的往里擠&#xff0c;但B站的人就是永遠不會…

js call,apply,bind三個方法的區別

相同點&#xff1a; 都是能夠改變this的指向 不同點&#xff1a; 1.call()&#xff1a;傳參方式跟bind一樣&#xff08;都是以逗號隔開的傳參方式&#xff09;&#xff0c;但是跟apply&#xff08;以數組的形式傳參&#xff09;不一樣&#xff0c; 2.bind(): 此方法應用后的情形…

千年鴻蒙 盼爾來兮是什么意思,鴻蒙是什么意思_鴻蒙的意思和出處_我愛歷史網...

鴻蒙&#xff0c;是一個漢語詞語&#xff0c;亦作“鴻濛”。中國神話傳說的遠古時代&#xff0c;傳說在盤古開天辟地之前&#xff0c;世界是一團混沌狀&#xff0c;因此把那個時代稱作鴻蒙時代&#xff0c;后來該詞也常被用來泛指遠古時代。引證解釋亦作“鴻濛”。1、宇宙形成前…

python中調用萬年歷_python 打印萬年歷

題目&#xff1a;打印萬年歷已知條件閏年條件&#xff1a;能被4整除且不能被100整除&#xff0c;或者能被400整除1900年1月1日 是周一解題思路判斷閏年;判斷當月有多少天;這個月的1號是從周幾開始的;格式化打印日歷。解題代碼#判斷年份是否為閏年def is_leap_year(year):if (ye…

求水仙花數

求出所有的"水仙花數"&#xff0c;所謂"水仙花數"是指一個三位數&#xff0c;其各位數字立方和等于該數本身。 1 /**2 * 題目&#xff1a;打印出所有的"水仙花數"&#xff0c;所謂"水仙花數"是指一個三位數&#xff0c;其各位數字立方…

在VS2015中用C++創建DLL并用C#調用且同時實現對DLL的調試

from:http://m.blog.csdn.net/article/details?id51075023 在VS2015中先創建C#項目&#xff0c;然后再創建要編寫的動態庫DLL項目&#xff0c;這樣做的好處是整個解決方案的編程環境是C#模式&#xff0c;這樣就可以有很多智能的提示或快捷的編程方式在整個解決方案中都可以使用…

(轉)CocosCreator零基礎制作游戲《極限跳躍》二、制作游戲開始場景

CocosCreator零基礎制作游戲《極限跳躍》二、制作游戲開始場景 我們剛剛分析了《極限跳躍》這款游戲&#xff0c;下面我們開始制作第一個游戲場景&#xff0c;也就是游戲的開始場景。 首先&#xff0c;打開CocosCreator&#xff0c;新建HelloWorld項目。選擇項目路徑&#xff0…

連接池超時配置_HttpClient連接池的一些思考

前言使用apache的httpclient進行http的交互處理已經很長時間了&#xff0c;而httpclient實例則使用了http連接池&#xff0c;想必大家也沒有關心過連接池的管理。事實上&#xff0c;通過分析httpclient源碼&#xff0c;發現它很優雅地隱藏了所有的連接池管理細節&#xff0c;開…

android界面布局錯位,IOS 瀏覽器頁面布局錯位(如:點不到)的分析與解決

IOS 瀏覽器頁面布局錯位(如&#xff1a;點不到)的分析與解決IOS 瀏覽器軟鍵盤的拉起與收縮、微信 IOS 瀏覽器底部導航條的顯示與隱藏&#xff0c;很容易導致頁面布局錯位(相對窗體的絕對定位元素)&#xff1a;明明按鈕在這里&#xff0c;卻要在上面一點兒點擊屏幕才能點到它明明…

做進度條 根據自己的數據顯示進度

做了很多種方法 1&#xff1a; 線程 thread的方法 2&#xff1a; backGroundWorker的方法 3&#xff1a; 自定義線程類 4&#xff1a; 做一個進度條的窗體 通過自定義設置做&#xff08;最方便快捷&#xff09; public partial class waitingProcessbar : Form{public waitin…

視圖和模型變換

視圖變換&#xff0c;是指變換照相機的位置&#xff0c;角度。 模型變換&#xff0c;是指變換被照物體的位置&#xff0c;角度。 這兩個變換&#xff0c;都會影響最終圖形中&#xff0c;物體的位置&#xff0c;角度。而這兩個變換&#xff0c;可以達到相同的效果。比如&#x…

phoenix的元數據一般存在哪里_Phoenix的一些問題

date: 2020-09-10 13:50:00updated: 2020-09-14 16:30:001. Phoenix索引全局索引&#xff1a;適合讀多寫少的場景。寫數據時因為索引表分布在不同數據節點&#xff0c;跨節點數據傳輸帶來巨大的性能消耗。全局索引必須是查詢語句中所有列都包含在全局索引中&#xff0c;它才會生…

鴻蒙os全面升級,華為突然宣布,鴻蒙OS正式版6月底全面升級,幸福來得太突然...

原標題&#xff1a;華為突然宣布&#xff0c;鴻蒙OS正式版6月底全面升級&#xff0c;幸福來得太突然摘要&#xff1a;早在今年2月華為Mate X2折疊屏新品發布會上&#xff0c;余承東曾表示&#xff0c;鴻蒙OS正式版將于今年4月份全面上線。或許是因為華為宣布賣車分散了很多的精…

5-python學習——條件語句

5-python學習——條件語句 5-python學習——條件語句 條件語句if else形式if else條件語句說明 測試一下編程語言一般都由這么幾個部分組成 變量條件分支語句循環語句函數這里要說的就是條件分支語句。 python的條件語句和shell腳本的非常像&#xff0c;也就是if else if else這…

eclipse啟動失敗:An internal error occurred during: reload maven project

2019獨角獸企業重金招聘Python工程師標準>>> 1.找到workspace文件夾下的/.metadata文件夾&#xff0c;將其刪除掉&#xff0c;然后在講項目重新導入進去eclipse中。但是這個有一點不好的地方&#xff0c;之前對eclipse所做的配置也會恢復為默認配置 2.在.metadata下…

Quartz2D知識點聚合案例

Quartz2D知識點聚合 基本 //畫圖片UIImage *image [UIImage imageNamed:"阿貍頭像"];[image drawInRect:rect];//字體NSString *title "標題";NSMutableDictionary *atr [NSMutableDictionary dictionary];atr[NSFontAttributeName] [UIFont systemFon…