使用Jenkins持續(xù)部署Docker應用

CI/CD應該是大部分公司進行迭代開發(fā)的模式。個人理解就是系統(tǒng)規(guī)范流程化地去進行迭代開發(fā)丹喻,而中間又涉及到多個部分薄货,包含需求,編碼碍论,編譯谅猾,測試,上線鳍悠,部署税娜,運維,管理藏研。這些形成了一個閉環(huán)敬矩。


image.png

關于CI/CD的工具,之前用過AzureDevOps蠢挡,當時沒有深入研究谤绳,大致感覺就是提交代碼之后會自動進行版本發(fā)布(并且經常會莫名其妙失敗)袒哥,然后項目經理能夠很好地去看到項目迭代情況。
現(xiàn)在公司的項目都再用TAPD來進行迭代開發(fā)管理消略,但是修改后重新發(fā)布都需要手動去進行(今年疫情期間在家辦公堡称,前后端有任何更新都得直接發(fā)布),經歷過的人都知道艺演,頻繁手動發(fā)布很浪費時間却紧。特別是進入微服務時代之后,多個應用需要全部發(fā)布胎撤,手動挨個發(fā)布基本不可行晓殊。
本文目的很簡單,就是希望在提交代碼到倉庫的時候也能自動發(fā)布到測試環(huán)境上面(媽媽在也不用擔心我被前端同事催著發(fā)布更新)伤提,我們使用現(xiàn)在比較流行地Jenkins去完成巫俺。

Docker啟動Jenkins/Jenkins

我們選擇使用Docker去進行發(fā)布Jenkins,需要注意的是使用Jenkins/Jenkins這個鏡像(已經包含很多常用組件)肿男。


image.png

創(chuàng)建容器:

docker run -d -p 8000:8080 -p 50000:50000 -v /home/jenkins:/var/jenkins_home --name jenkins --restart always --privileged=true  -u root jenkins/jenkins

這里掛載的數(shù)據(jù)卷對應目錄是/var/jenkins_home,其中包含項目的配置以及Jenkins的任務工作區(qū)內容介汹,啟動完成后還需要對容器去進行配置却嗡。由于宿主機上已經存在對應的掛載目錄,因此可以直接宿主上的配置嘹承,這些配置大致和插件更新等有關:

配置Jenkins

解鎖

瀏覽器訪問8000端口叹卷,第一次訪問需要解鎖撼港,密碼在提示的文件中。


image.png

安裝組件

可以選擇【選擇插件來安裝】來查看有哪些插件骤竹。


image.png

可以先安裝推薦的插件帝牡。


image.png

創(chuàng)建一個新任務

選擇Freestyle Project去創(chuàng)建一個任務。


image.png

基礎配置

image.png

配置源代碼

源代碼管理這里使用的是github瘤载,配置完地址以及訪問憑證否灾,如果需要使用其他的工具,可以安裝對應插件鸣奔。


image.png

從系統(tǒng)管理->系統(tǒng)配置中找到GitHub配置墨技,選擇”高級“,拷貝Hook地址。


image.png

登錄GitHub挎狸,在對應Repository中的Webhooks配置鉤子地址扣汪。這樣一旦Git有更新就會去觸發(fā)Jenkins上的任務。Recent Deliveries可以查看最近的觸發(fā)锨匆,也可以方便調試崭别。
image.png

配置觸發(fā)方式

配置觸發(fā)器,配置如下恐锣,H/1表示每一分鐘去檢查源代碼是否有更新茅主,可以根據(jù)自己項目實際情況去進行配置。


image.png

配置構建步驟

這個例子中Jenkins服務器負責根據(jù)新的代碼去構建Docker鏡像土榴,并且上傳到DockerHub上诀姚,接著SSH到另外一臺發(fā)布服務器上,拉去對應鏡像并且啟動容器:

  • 構建鏡像玷禽,選擇執(zhí)行shell赫段。
    這里使用到Docker,因為這里的Jenkins本身就是在運行在Docker里面的矢赁,因此涉及到在Docker里面安裝Docker糯笙,可參考我自己寫的另外一篇文章:

http://www.reibang.com/p/8bdefb618a98

image.png

相關腳本:

cd /var/jenkins_home/workspace/Test;
docker rmi testjenkins &>/dev/null;
docker login -u alexwillbegood -p {DockerHub密碼};
docker build -t alexwillbegood/testjenkins .;
docker push alexwillbegood/testjenkins;
  • 發(fā)布服務,選擇使用ssh執(zhí)行腳本撩银。
    需要從系統(tǒng)管理->插件管理中安裝SSH插件给涕,配置好遠程SSH地址。


    image.png

    相關腳本:

docker rmi alexwillbegood/testjenkins &>/dev/null;
docker stop testjenkins &>/dev/null;
docker rm testjenkins &>/dev/null;
docker login -u alexwillbegood -p {DockerHub密碼};
docker pull alexwillbegood/testjenkins;
docker run -d --name testjenkins -p 8001:80 -e ASPNETCORE_ENVIRONMENT="Development" --restart=always alexwillbegood/testjenkins;

注意這里的腳本還有大量的優(yōu)化空間,比如:

  • 直接使用了&>/dev/null將異常丟進"黑洞"稠炬,沒有去判斷鏡像是否存在焕阿,容器是否啟動/存在等等問題。
  • 這里的DockerHub登錄直接使用賬戶密碼的方式(明文寫在配置中其實是件可怕的事情)首启,DockerHub提供了CredentialStore的方式解決這個問題暮屡。
  • 腳本文件也可以以文本文件的形式存在,這里的腳本只寫“”sh build.sh”.這樣做的好處是能夠使得構建方式可以跟隨代碼一起更新毅桃,不需要每次更改都上服務器褒纲,更加靈活。

查看構建歷史

image.png

完結

至此钥飞,更新Git后就能夠使用Docker自動部署到對應服務器莺掠。因為我是已經完成后再寫的這篇文章,沒有完全重復這些步驟读宙,有問題或者有更好的方案可以評論交流彻秆。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市结闸,隨后出現(xiàn)的幾起案子唇兑,更是在濱河造成了極大的恐慌,老刑警劉巖桦锄,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扎附,死亡現(xiàn)場離奇詭異,居然都是意外死亡结耀,警方通過查閱死者的電腦和手機留夜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來图甜,“玉大人碍粥,你說我怎么就攤上這事『谝悖” “怎么了即纲?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長博肋。 經常有香客問我,道長蜂厅,這世上最難降的妖魔是什么匪凡? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮掘猿,結果婚禮上病游,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好衬衬,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布买猖。 她就那樣靜靜地躺著,像睡著了一般滋尉。 火紅的嫁衣襯著肌膚如雪玉控。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天狮惜,我揣著相機與錄音高诺,去河邊找鬼。 笑死碾篡,一個胖子當著我的面吹牛虱而,可吹牛的內容都是我干的。 我是一名探鬼主播开泽,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼牡拇,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了穆律?” 一聲冷哼從身側響起惠呼,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎众旗,沒想到半個月后罢杉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡贡歧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年滩租,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片利朵。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡律想,死狀恐怖,靈堂內的尸體忽然破棺而出绍弟,到底是詐尸還是另有隱情技即,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布樟遣,位于F島的核電站而叼,受9級特大地震影響,放射性物質發(fā)生泄漏豹悬。R本人自食惡果不足惜葵陵,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瞻佛。 院中可真熱鬧脱篙,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至秤朗,卻和暖如春煤蹭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背川梅。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工疯兼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人贫途。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓吧彪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親丢早。 傳聞我的和親對象是個殘疾皇子姨裸,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內容