docker安裝jenkins部署并且自動化打包部署java服務(wù)

一、準(zhǔn)備docker環(huán)境


Docker 要求 CentOS 系統(tǒng)的內(nèi)核版本高于 3.10 ,查看CentOS的內(nèi)核版本。(uname -a)

1.在安裝docker 之前先要清除之前的版本

yum remove docker \

? ? ? ? ? ? ? ? ? docker-client \

? ? ? ? ? ? ? ? ? docker-client-latest \

? ? ? ? ? ? ? ? ? docker-common \

? ? ? ? ? ? ? ? ? docker-latest \

? ? ? ? ? ? ? ? ? docker-latest-logrotate \

? ? ? ? ? ? ? ? ? docker-logrotate \

? ? ? ? ? ? ? ? ? docker-engine

2.添加docker國內(nèi)源

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3.查看倉庫中docker的版本,然后更新緩存并安裝(如果要安裝特定版本,可以在指定下載如:docker-ce-18.06.1.ce)

yum list docker-ce --showduplicates | sort -ryum makecache fast

yum -y install docker-ce-18.06.2.ce-3.el7

4.啟動docker

systemctl start docker && systemctl enable docker

5.設(shè)置國內(nèi)鏡像加速器 vim /etc/docker/daemon.json

{

? "registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"],

? "data-root": "",

? "log-driver": "json-file",

? "log-opts": {"max-size":"200m", "max-file":"3"}

}

systemctl daemon-reload && systemctl restart docker 重啟docker

二、拉取jenkins最新的鏡像,并且啟動起來

1. docker pull jenkins/jenkins 默認(rèn)拉取最新的版本

2. 創(chuàng)建jenkins的工作目錄 最好創(chuàng)建到數(shù)據(jù)盤的目錄下

mkdir -p /opt/jenkins

chmod 777 /opt/jenkins? ? 賦予相應(yīng)權(quán)限

3.啟動jenkins鏡像

docker run --restart=always -m 2048M -p 8081:8080 -p 50000:50000 -v /etc/localtime:/etc/localtime --name jenkins -v /opt/jenkins:/var/jenkins_home -d jenkins/jenkins:latest

下面是參數(shù)的詳細(xì)解讀

--restart docker的開機自啟動

-m 2048M? 給jenkins分配最大內(nèi)存

-p 8081:8080? jenkins內(nèi)部默認(rèn)端口是8080,這里我們映射成我們自己定義喜歡的端口

-p 50000:50000 同上默認(rèn)不能修改,修改后面會出錯

-v? /etc/localtime:/etc/localtime? 容器內(nèi)部時區(qū)獨立,同步宿主機和容器的時間

--name? jenkins? 啟動來的容器命名

-v /opt/jenkins:/var/jenkins_home 掛載邏輯卷目錄? ,? /var/jenkins_home目錄為容器jenkins工作目錄,我們將硬盤上的一個目錄掛載到這個位置,方便后續(xù)更新鏡像后繼續(xù)使用原來的工作目錄。這里我們設(shè)置的就是上面我們創(chuàng)建的?

docker ps? 查看啟動的容器。 狀態(tài)為up啟動成功,其他狀態(tài),使用docker logs jenkins 查看日志尋找問題

3.ip加端口在瀏覽器下訪問,溫馨提示:如果是云服務(wù)需要開通安全組8081和50000.關(guān)閉防火墻和selinux,物理機關(guān)閉防火墻和selinux? ,開通和關(guān)閉方法請百度

出現(xiàn)下面圖片畫面就是啟動成功?



三、配置和使用jenkins

1.查看訪問jenkins的密碼

cat /opt/jenkins/secrets/initialAdminPassword? 復(fù)制黏貼到上面訪問的內(nèi)容中

2.配置jenkins



選擇第一個,推薦安裝,如果出現(xiàn)無法連接jenkins,請查看上面更換本地源是否正確或者電腦網(wǎng)絡(luò)問題選擇重試



點擊使用admin賬號繼續(xù)



保存并完成

后面開始使用jenkins

3.修改jenkins的admin賬號密碼





設(shè)置,下滑找到密碼



修改完之后保存,重新登錄

4.配置jenkins和安裝一些必要的插件

首先安裝必要的git、jdk、maven

系統(tǒng)管理<全局工具配置

git使用默認(rèn)就行

jdk 點擊新增jdk? 取個別名jdk1.8?

路徑是/opt/java/openjdk



以后的容器中的jenkins的jdk位置不知道會不會變,最好親自進入容器查看

docker exec -i -t jenkins /bin/bash

echo $JAVA_HOME



maven 點擊新增maven 取個名字 選擇你要安裝的maven版本



最后保存

再來安裝一些插件:

系統(tǒng)管理<插件管理<可選插件? 搜索插件Ant In Workspace? 配置jdk+maven環(huán)境的插件

Publish Over SSH把文件通過ssh發(fā)布到服務(wù)器的插件

Maven Integration java項目構(gòu)建

安裝

配置Publish Over SSH

系統(tǒng)管理<系統(tǒng)設(shè)置? 滑倒最下面配置Publish over SSH


點擊新增





點擊高級



點擊使用密碼或者密鑰



三個填一個就行,有密碼使用密碼,至于密鑰,云服務(wù)器如果有密鑰對直接復(fù)制密鑰就行,也可以用ssh-keygen,在復(fù)制到目標(biāo)服務(wù)器上就行,具體操作不在這里細(xì)說,詳情百度ssh密鑰登入服務(wù)器



填完之后test一下,出現(xiàn)success即可。保存。

四、上面準(zhǔn)備工作完成,現(xiàn)在讓我們來構(gòu)建一個項目。

新建任務(wù)<取一個項目名稱構(gòu)建一個maven項目


描述為測試項目

源碼管理勾選git,填入代碼地址,添加憑據(jù),填寫用戶和密碼



指定分支,可以填分支名稱

構(gòu)建觸發(fā)器這里把原本的去掉





配置發(fā)布jar包規(guī)則





這上面的都是根據(jù)項目來填寫,每個java項目存放jar包可能略微不同

最后保存完成。

現(xiàn)在我們在目標(biāo)服務(wù)創(chuàng)建項目的路徑,還有寫dockerfile和啟動鏡像的腳本

cd? /opt/project

mkdir email

cd email

mkdir backup? 存放jar包的備份? mkdir build? ? #jenkins遠程傳出jar包的路徑? ? mkdir? docker? 項目日志

vim? Dockerfile

? #使用的基礎(chǔ)鏡像

FROM java:8u111

#作者

MAINTAINER jiangming

#把當(dāng)前目錄下的jar包添加到鏡像

ADD ./XXX.jar /usr/local/XXX.jar

#啟動時運行jar包,并把日志輸出到指定目錄中

CMD java -server -Xms1024m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$HEAP_ERROR_PATH -jar -Duser.timezone=GMT+08 /usr/local/XXX.jar --spring.profiles.active=dev > /usr/local/logs/XXX.log??

XXX為項目名? ? ? ? dev為項目啟動的環(huán)境

vim ps.sh? ? ? ? ? ? 寫發(fā)布腳本

#!/bin/bash

export BUILD_ID=dontKillMe

web=XXX

webdir=/opt/projects/XXX

date=$(date +%Y%m%d%H%M)

echo "####### 備份jar包 ##########"

cp $webdir/$web.jar $webdir/backup/$web-$date.jar?

rm -rf $webdir/$web.jar

mv $webdir/build/*.jar $webdir/$web.jar

echo "####### 刪除當(dāng)前容器 ##########"

docker stop $web #先停止容器運行

sleep 3

docker ps -a | grep $web|grep -v "grep"|awk '{print $1}' |xargs docker rm -f?? #刪除容器

sleep 1

echo "####### 刪除當(dāng)前鏡像 ##########"

docker images |grep $web | grep -v "grep" | awk '{print $3}' |xargs docker rmi?? #刪除鏡像

sleep 1

echo "####### 制作最新的當(dāng)前鏡像 ##########"

cd $webdir

docker build -t $web .?????? #執(zhí)行dockerfile,生成項目鏡像

sleep 3

echo "####### 啟動當(dāng)前最新的容器 ##########"

docker run -m 2048M --restart=always --network=host -v $webdir/docker/:/usr/local/logs/ -d --name=$web $web:latest?

sleep 2

echo "#######判斷項目是否啟動成功 ##########"

pid=`ps aux|grep $web|grep -v grep |grep -v "/bin/sh"| awk '{print $2}'`???? #打印項目啟動后的pid

#如果不存在返回1,存在返回0

if [ -z "${pid}" ]; then

echo "################################項目啟動失敗################################"

cat dsadsadas #使jenkins發(fā)布失敗,導(dǎo)致構(gòu)建項目不穩(wěn)定

else

echo "################################項目啟動成功#########################################"

fi

上面腳本和dockerfile只是借鑒操作,可以模仿中間出現(xiàn)問題請自行調(diào)整,也可以來本人

現(xiàn)在我們所有的準(zhǔn)備工作都完畢。現(xiàn)在點擊構(gòu)建



打開控制臺輸出,

拉一些項目依賴jar包第一次有點慢,以后就不會了



success發(fā)布成功

現(xiàn)在去服務(wù)器底下docker ps ,查看服務(wù)有沒有啟動起來



項目服務(wù)已經(jīng)up,說明啟動成功,如果啟動失敗,可以docker logs email 查看日志,也可以去項目底下的docker目錄查看日志





最后,有問題請教聯(lián)系方式在主頁

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,527評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,687評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,640評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,957評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,682評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,011評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,009評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,183評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,714評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,435評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,665評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,148評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,838評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,251評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,588評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,379評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,627評論 2 380

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