Jenkins+Docker+SpringBoot

背景:

項(xiàng)目采用springboot框架,用gradle構(gòu)建,版本管理使用git

本文目的:

1 使用Jenkins從git服務(wù)器拉取代碼并打war包

2 構(gòu)建后Jenkins通過執(zhí)行腳本,build出tomcat的docker的鏡像并啟動應(yīng)用

步驟:

1 基礎(chǔ)環(huán)境,jdk,gradle安裝省略

2 Docker安裝參考官網(wǎng):?docker安裝文檔

3 Jenkins安裝下載?Jenkins官網(wǎng)下載

?Jenkins其實(shí)是個web應(yīng)用, 建議下載war包版本的Jenkis,其他版本的本質(zhì)上就是war包. war包直接放到宿主機(jī)的tomcat等容器中運(yùn)行即可,如果不想安裝tomcat,可以使用jdk自帶(jdk7以上)的命令來啟動:

java -jar jenkins.war --httpPort=9090 --prefix=/jenkins

以上命令啟動后,訪問Jenkins地址:http://宿主機(jī)IP:9090/jenkins

根據(jù)提示輸入admin密碼,密碼查看位置:/用戶目錄/.jenkins/secrets/initialAdminPassword

輸入admin密碼后,會提示創(chuàng)建新用戶,安裝一些插件,可選擇前面一個選項(xiàng),安裝一些標(biāo)準(zhǔn)插件(這一步進(jìn)入Jenkins后也可以自己增加需要的插件)等,按照提示操作即可

4 項(xiàng)目配置

正常的springboot,gradle的工程結(jié)構(gòu),但是需要在工程根目錄增加Dockerfile 文件(無擴(kuò)展名),提交到git

Dockerfile文件內(nèi)容如下:

FROM tomcat:8 #使用tomcat 8

MAINTAINER whl

ENV REFRESHED_AT 2017-9-18

RUN rm -rf /usr/local/tomcat/webapps/myproj/* #刪除原先部署的文件

COPY build/libs/myproj-0.0.1-SNAPSHOT.war /usr/local/tomcat/webapps/myproj/ #將構(gòu)建出來的war包復(fù)制到部署目錄,這里我放在了tomcat的webapps下面 ,因?yàn)槊钍窃趈enkins中該項(xiàng)目的工作目錄下執(zhí)行,打包后的文件在build/libs下,因此拷貝使用相對路徑即可 ,這里是將宿主機(jī)的文件拷貝到容器中



RUN cd /usr/local/tomcat/webapps/myproj ; unzip myproj-0.0.1-SNAPSHOT.war #進(jìn)入容器的目錄,解壓war包,個人習(xí)慣這種方式


EXPOSE 8080 #暴露8080端口

ENTRYPOINT ["/usr/local/tomcat/bin/catalina.sh", "run" ] #啟動tomcat


5 Jenkins配置

登錄Jenkins,在上一步安裝了標(biāo)準(zhǔn)插件的基礎(chǔ)上,進(jìn)入系統(tǒng)管理->管理插件,安裝插件 Hudson Post build task

點(diǎn)擊"新建"


選擇自由風(fēng)格項(xiàng)目,輸入名稱后點(diǎn)擊保存

輸入git的地址,點(diǎn)擊add按鈕來添加訪問git需要的用戶密碼信息

在構(gòu)建標(biāo)簽中選擇gralde方式


輸入要執(zhí)行的命令,下圖輸入war,等于執(zhí)行 gradle war 命令進(jìn)行打包

在構(gòu)建后操作標(biāo)簽中,選擇post build task(依賴于上面安裝的插件Hudson Post build task)

Logtext 輸入見下圖,不能輸入別的,因?yàn)樯弦徊綐?gòu)建成功輸出的就是 BUILD SUCCESSFUL

也就是說,這一步依賴于構(gòu)建是否成功,構(gòu)建成功才會執(zhí)行腳本

script中可以直接輸入腳本,也可以運(yùn)行指定的sh腳本,建議將要執(zhí)行的腳本寫到sh文件中,如果將多行腳本直接填寫在這里,會出現(xiàn)一行執(zhí)行失敗,就不再執(zhí)行后續(xù)其他腳本的問題


這里我們再build docker image的時候,設(shè)置一個我們自己的唯一的tag,比如

docker build -t whl:mytag . ?目的是后續(xù)停止容器,刪除image的時候用grep來查找

網(wǎng)上很多教程都是很暴力的把docker中所有的容器都刪除,這個在實(shí)際生產(chǎn)中顯然是不行的

本例中docker.sh執(zhí)行的就是docker的相關(guān)命令,內(nèi)容如下:

docker ps -a|grep mytag | awk '{print $1}'|xargs docker kill # kill掉已經(jīng)啟動的這個工程的容器,根據(jù)tag來查找,防止誤殺其他容器

docker ps -a|grep mytag | awk '{print $1}'|xargs docker rm #刪除掉相關(guān)容器,也根據(jù)tag查找,防止誤刪其他項(xiàng)目的docker

docker images|grep mytag | awk '{print $3}'|xargs docker rmi #刪除已經(jīng)存在的容器,同樣根據(jù)我們的tag來查找

docker build -t whl:mytag . ?#build新的image,設(shè)置為我們自己的唯一tag,注意這行結(jié)尾有個"點(diǎn)",表示讀取當(dāng)前目錄的Dockerfile,也就是前面我們放在項(xiàng)目根目錄的文件

docker run -d -v /resource:/resource? -p 8081:8080 whl:mytag #啟動容器,綁定端口,共享需要的目錄

點(diǎn)擊立即構(gòu)建后,會出現(xiàn)下圖構(gòu)建進(jìn)度,點(diǎn)擊 15 進(jìn)去可以看構(gòu)建過程詳情

點(diǎn)擊 Console Output,可以看到日志輸出

這里輸出的 BULD SUCCESSFUL 就是我們構(gòu)建后執(zhí)行腳本的前置條件

后續(xù)就是執(zhí)行docker相關(guān)的命令輸出

成功后打開瀏覽器訪問 http://127.0.0.1:8081/myporj 可以看到你自己的工程啟動了.

工程啟動過程中有錯誤就不在本文討論范圍了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末江场,一起剝皮案震驚了整個濱河市聪铺,隨后出現(xiàn)的幾起案子惧浴,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件镐躲,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)具伍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來圈驼,“玉大人人芽,你說我怎么就攤上這事〖ù啵” “怎么了萤厅?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長靴迫。 經(jīng)常有香客問我惕味,道長,這世上最難降的妖魔是什么玉锌? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任名挥,我火速辦了婚禮,結(jié)果婚禮上芬沉,老公的妹妹穿的比我還像新娘躺同。我一直安慰自己阁猜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布蹋艺。 她就那樣靜靜地躺著剃袍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪捎谨。 梳的紋絲不亂的頭發(fā)上民效,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天,我揣著相機(jī)與錄音涛救,去河邊找鬼畏邢。 笑死,一個胖子當(dāng)著我的面吹牛检吆,可吹牛的內(nèi)容都是我干的舒萎。 我是一名探鬼主播,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼蹭沛,長吁一口氣:“原來是場噩夢啊……” “哼臂寝!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起摊灭,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤咆贬,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后帚呼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掏缎,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年煤杀,在試婚紗的時候發(fā)現(xiàn)自己被綠了眷蜈。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡怜珍,死狀恐怖端蛆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情酥泛,我是刑警寧澤今豆,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站柔袁,受9級特大地震影響呆躲,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜捶索,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一插掂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦辅甥、人聲如沸酝润。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽要销。三九已至,卻和暖如春夏块,著一層夾襖步出監(jiān)牢的瞬間疏咐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工脐供, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留浑塞,地道東北人。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓政己,卻偏偏與公主長得像酌壕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子歇由,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評論 2 350

推薦閱讀更多精彩內(nèi)容