Jenkins2.263.1+Docker1.1.0高效部署SpringBoot應(yīng)用

平時(shí)上線的你可能是重復(fù)著以下步驟:
①提交代碼→②本地打包→③將應(yīng)用上傳到服務(wù)器并啟動(dòng)
假如線上有一個(gè)bug爽篷,你可能需要再一次歷經(jīng)上面三個(gè)步驟才算真正解決掉這個(gè)bug叹阔。

有了Jenkins和Docker兩大法寶后叮姑,你上線的步驟變?yōu)椋?br> ①提交代碼→②登錄Jenkins啟動(dòng)任務(wù)(新建任務(wù)在第一次上線時(shí)完成)
對(duì)比上面的步驟少了一個(gè)步驟贱傀。Jenkins和Docker幫助我們解決了什么問(wèn)題呢押桃?不用再手動(dòng)打包了况毅,這是因?yàn)榭梢栽贘enkins網(wǎng)頁(yè)配置Maven打包命令。不用再手動(dòng)輸入命令啟動(dòng)應(yīng)用了异吻,這是因?yàn)镴enkins支持遠(yuǎn)程SSH工具裹赴,SSH工具就是通過(guò)腳本來(lái)執(zhí)行遠(yuǎn)程應(yīng)用的利器。

1诀浪、Docker的安裝及配置

可自行搜索安裝篮昧。

2、Jenkins的安裝及配置

2.1笋妥、拉取Jenkins的Docker鏡像

docker pull jenkins/jenkins:lts

lts表示官方最新且穩(wěn)定的版本懊昨,大小為701M。

2.2春宣、預(yù)先解決插件下載龜速問(wèn)題

2.2.1酵颁、查看jenkins版本號(hào)

cat /mydata/jenkins_home/config.xml

版本號(hào)位于第四行的version標(biāo)簽內(nèi),這里的版本號(hào)為2.263.1月帝。為啥要查一下版本號(hào)呢躏惋?根據(jù)筆者的經(jīng)驗(yàn),隨著版本的升級(jí)嚷辅,鏡像源對(duì)應(yīng)的初始配置內(nèi)容也會(huì)發(fā)生變化簿姨,所以舊版本被修改的內(nèi)容可能已經(jīng)不適用了。

2.2.2簸搞、default.json文件中針對(duì)部分內(nèi)容進(jìn)行替換

執(zhí)行命令:

sed -i 's/www.google.com/www.baidu.com/g' /mydata/jenkins_home/updates/default.json
sed -i 's/https:\/\/updates.jenkins.io\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' /mydata/jenkins_home/updates/default.json

注:第二行需要修改的內(nèi)容可能會(huì)隨著Jenkins的版本升級(jí)發(fā)生變化扁位,一般情況下,找到updates開(kāi)頭的二級(jí)域名即可趁俊。

2.3域仇、在Docker環(huán)境下運(yùn)行Jenkins

docker run -p 8080:8080 -p 50000:5000 --name jenkins \
-u root \
-v /mydata/jenkins_home:/var/jenkins_home \
-d jenkins/jenkins:lts

命令詳解:
第一行:
-p:表示【指定】端口映射,格式為主機(jī)(容器)端口:容器端口寺擂,啟動(dòng)時(shí)以冒號(hào)左邊的端口號(hào)為準(zhǔn)暇务。這條命令包含兩個(gè)端口映射:
8080是訪問(wèn)Jenkins網(wǎng)頁(yè)的端口號(hào)泼掠,如果想通過(guò)其他端口號(hào)來(lái)訪問(wèn)Jenkins,通過(guò)更改命令中的端口號(hào)來(lái)啟動(dòng)是行不通的垦细;
50000端口號(hào)的由來(lái):Jenkins實(shí)際上是使用JNLP語(yǔ)言來(lái)建設(shè)服務(wù)器的择镇,而JNLP所需的服務(wù)端口正是50000;
--name 容器名稱:指定啟動(dòng)時(shí)的容器的名稱括改,通過(guò)自定義的命名方式能便于快速地發(fā)現(xiàn)容器的位置沐鼠,這里的容器名稱是jenkis;

第二行:
-u root:指定用戶名為root的用戶來(lái)啟動(dòng)Jenkins;

第三行:
-v /mydata/jenkins_home:/var/jenkins_home:掛載了宿主機(jī)的一個(gè)指定目錄到/var/jenkins_home叹谁,相當(dāng)于設(shè)置了自定義的JENKINS_HOME;

第四行:
-d jenkins/jenkins:lts:后臺(tái)運(yùn)行容器乘盖,jenkins/jenkins:lts為拉取時(shí)的鏡像名稱焰檩。

2.4、進(jìn)入Jenkins網(wǎng)頁(yè)

2.4.1订框、獲取管理員密碼

方法1:Windows-IDEA的Docker控制臺(tái)


圖1

方法2:Linux-啟動(dòng)日志

docker logs jenkins
圖2

2.4.2析苫、解鎖Jenkins

輸入網(wǎng)址:服務(wù)器IP地址:8080,使用上一步獲取的管理員密碼來(lái)解鎖穿扳。


圖3

2.4.3衩侥、安裝推薦的插件

圖4

2.4.4、等待插件安裝完成矛物,創(chuàng)建管理員賬號(hào)

圖5

2.4.5茫死、實(shí)例配置

圖6

2.4.6、必備插件安裝

點(diǎn)擊Manage Jenkins→Manage Plugins進(jìn)入到插件管理界面


圖7
  • SSH安裝履羞,用于配置遠(yuǎn)程站點(diǎn)的參數(shù)


    圖8

等待安裝完成后峦萎,點(diǎn)擊返回首頁(yè)→Manage Jenkins→Manage Plugins繼續(xù)安裝。

  • Role-based Authorization Strategy安裝忆首,支持根據(jù)角色管理權(quán)限爱榔。


    圖9

2.4.7、全局Maven配置

點(diǎn)擊Manage Jenkins-Global Tool Configuration糙及,新增Maven配置


圖10

2.4.8详幽、全局SSH配置

  • 添加憑據(jù)
    點(diǎn)擊首頁(yè)→Manage Jenkins→Manage Credentials→添加憑據(jù)


    圖11

    輸入信息保存憑據(jù)


    圖12
  • SSH遠(yuǎn)程主機(jī)配置


    圖13

2.4.9、角色權(quán)限配置

  • 全局安全配置
    Jenkins的角色管理插件可以幫助我們管理Jenkins的用戶浸锨,對(duì)于不同的角色可以給到其應(yīng)有的權(quán)限唇聘。
    點(diǎn)擊首頁(yè)→Manage Jenkins→Configure Global Security


    圖14
  • 管理和分配角色
    點(diǎn)擊首頁(yè)→Manage Jenkins


    圖15.png

3、SpringBoot應(yīng)用的打包并部署

3.1柱搜、代碼上傳到Git倉(cāng)庫(kù)

Git倉(cāng)庫(kù)沒(méi)有指定廠商雳灾,可以是Gitlab、GitHub和Gitee其中的一個(gè)冯凹。

3.2谎亩、打包前準(zhǔn)備

  • 配置檢查
    這里的打包是通過(guò)docker構(gòu)建應(yīng)用的鏡像并上傳到docker容器內(nèi)炒嘲,需要在pom.xml中進(jìn)行配置,打開(kāi)pom.xml匈庭,定位到<plugins>標(biāo)簽下夫凸,補(bǔ)充docker插件的配置內(nèi)容:
<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>1.1.0</version>
    <executions>
        <execution>
            <id>build-image</id>
            <phase>package</phase>
            <goals>
                <goal>build</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <imageName>${project.artifactId}:${project.version}</imageName>
        <dockerHost>http://192.168.1.41:2375</dockerHost>
        <baseImage>anapsix/alpine-java:8_server-jre_unlimited</baseImage>
        <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]
        </entryPoint>
        <resources>
            <resource>
                <targetPath>/</targetPath>
                <directory>${project.build.directory}</directory>
                <include>${project.build.finalName}.jar</include>
            </resource>
        </resources>
    </configuration>
</plugin>

<dockerHost>標(biāo)簽的內(nèi)容需要替換成自己的Docker鏡像倉(cāng)庫(kù)地址,注意生產(chǎn)環(huán)境切勿隨意開(kāi)啟2375端口阱持,可以通過(guò)在云服務(wù)內(nèi)指定連接IP的方式開(kāi)啟2375端口夭拌。
<baseImage>標(biāo)簽中內(nèi)容是JDK環(huán)境,anapsix/alpine-java:8_server-jre_unlimited的優(yōu)點(diǎn)在于打包后的鏡像體積小衷咽,一般在一兩百兆左右鸽扁,節(jié)省了大量的硬盤(pán)空間。

  • 編寫(xiě)執(zhí)行腳本
mkdir /mydata/sh
cd /mydata/sh
echo '#!/usr/bin/env bash' > start.sh
echo "app_name='應(yīng)用名稱'" >> start.sh
echo "docker stop ${app_name}" >> start.sh
echo "echo '----stop container----'" >> start.sh
echo "docker rm ${app_name}" >> start.sh
echo "echo '----rm container----'" >> start.sh
echo "docker run --name ${app_name} -d -p 主機(jī)(容器)端口:容器端口 -v /mydata/app/${app_name}/logs:/home/workspace/app/logback ${app_name}:0.0.1-SNAPSHOT" >> start.sh
echo "echo '----start container----'" >> start.sh
  • 給執(zhí)行腳本添加可執(zhí)行權(quán)限
chmod +x ./mall-tiny-jenkins.sh

3.3镶骗、在Jenkins中新建任務(wù)

3.3.1桶现、新建一個(gè)任務(wù)

點(diǎn)擊首頁(yè)→新建任務(wù)


圖16

3.3.2、添加Git倉(cāng)庫(kù)地址

圖17

3.3.3鼎姊、添加Maven構(gòu)建

圖18

圖19

圖20

3.3.4骡和、添加遠(yuǎn)程執(zhí)行腳本構(gòu)建

圖21

command項(xiàng)輸入腳本執(zhí)行命令:/mydata/sh/start.sh


圖22

點(diǎn)擊保存后就可以在任務(wù)列表中看到新創(chuàng)建的任務(wù)了,點(diǎn)擊最后一個(gè)圖標(biāo)運(yùn)行任務(wù)相寇,點(diǎn)擊控制臺(tái)輸出可查看打印內(nèi)容慰于。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市唤衫,隨后出現(xiàn)的幾起案子婆赠,更是在濱河造成了極大的恐慌,老刑警劉巖佳励,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件页藻,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡植兰,警方通過(guò)查閱死者的電腦和手機(jī)份帐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)楣导,“玉大人废境,你說(shuō)我怎么就攤上這事⊥卜保” “怎么了噩凹?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)毡咏。 經(jīng)常有香客問(wèn)我驮宴,道長(zhǎng),這世上最難降的妖魔是什么呕缭? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任堵泽,我火速辦了婚禮修己,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘迎罗。我一直安慰自己睬愤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布纹安。 她就那樣靜靜地躺著尤辱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪厢岂。 梳的紋絲不亂的頭發(fā)上光督,一...
    開(kāi)封第一講書(shū)人閱讀 51,590評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音塔粒,去河邊找鬼结借。 笑死,一個(gè)胖子當(dāng)著我的面吹牛窗怒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蓄拣,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼扬虚,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了球恤?” 一聲冷哼從身側(cè)響起辜昵,我...
    開(kāi)封第一講書(shū)人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎咽斧,沒(méi)想到半個(gè)月后堪置,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡张惹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年舀锨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宛逗。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡坎匿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出雷激,到底是詐尸還是另有隱情替蔬,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布屎暇,位于F島的核電站承桥,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏根悼。R本人自食惡果不足惜凶异,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一蜀撑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧唠帝,春花似錦屯掖、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至瀑晒,卻和暖如春绍坝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背苔悦。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工轩褐, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人玖详。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓把介,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親蟋座。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拗踢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

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