成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Jenkins集成Docker鏡像實(shí)現(xiàn)自動(dòng)發(fā)布

defcon / 1228人閱讀

摘要:集群環(huán)境的部署方式使用集群管理工具通過(guò)版本新增文件實(shí)現(xiàn)滾動(dòng)升級(jí)容器等同于應(yīng)用的部署

1. 思路&流程

Jenkins集成Docker鏡像實(shí)現(xiàn)自動(dòng)發(fā)布與Jenkins發(fā)布mavne項(xiàng)目思路一樣總體流程 為:
Jenkins 拉去遠(yuǎn)端源碼 —— gitl
實(shí)現(xiàn)應(yīng)用打包 —— jenkins本地
把應(yīng)用程序打包進(jìn)Docker鏡像 —— Dockerfile
鏡像上傳到Docker私有倉(cāng)庫(kù) —— shell或者 Docker相關(guān)的Jekins插件
刪除老的Docker容器,運(yùn)行新的Docker容器 —— shell腳本

2. 環(huán)境準(zhǔn)備

Jenkins java maven Docker git git-Jenkins插件
配置Jenkins
Git倉(cāng)庫(kù)可以開(kāi)啟鉤子功能實(shí)現(xiàn)push代碼后自動(dòng)觸發(fā)Jenkins構(gòu)建功能,如需要可以在git倉(cāng)庫(kù)中開(kāi)啟此功能。
新建項(xiàng)目 選擇mavan風(fēng)格項(xiàng)目或者自由風(fēng)格項(xiàng)目(這里使用自由風(fēng)格)

3. 配置Jenkins構(gòu)建觸發(fā)器

說(shuō)明1:觸發(fā)遠(yuǎn)程構(gòu)建 (例如,使用腳本)
這個(gè)選項(xiàng)就是上面提到配合git倉(cāng)庫(kù)的鉤子功能實(shí)現(xiàn)代碼PUSH后Jenkins收到通知自動(dòng)觸發(fā)構(gòu)建項(xiàng)目的動(dòng)作
說(shuō)明2:Poll SCM日程表
定時(shí)檢查源碼變更,如果有更新就克隆下最新code下來(lái),然后執(zhí)行構(gòu)建動(dòng)作

 每5分鐘檢查一次該項(xiàng)目分支是否有變動(dòng),如果有就拉去最新code執(zhí)行構(gòu)建動(dòng)作
注:構(gòu)建觸發(fā)器這里我們不做任何選擇,這里只是介紹這兩周功能,如有需要自行實(shí)現(xiàn)。

4. 構(gòu)建日志輸出

查看docker本地倉(cāng)庫(kù)

鏡像已經(jīng)存在

容器已經(jīng)在運(yùn)行了

項(xiàng)目中的Dockerfile

Git倉(cāng)庫(kù)的項(xiàng)目當(dāng)中需要存放Dockerfie文件,用于打包應(yīng)用到鏡像里面

5. Dockerfile內(nèi)容如下:

為了避免構(gòu)建過(guò)程過(guò)多時(shí)間執(zhí)行過(guò)長(zhǎng),Dockerfile文件只做了一件事就是把Jenkins打包好的應(yīng)用文件添加進(jìn)容器里。其他所需的環(huán)境和操作都將在基礎(chǔ)鏡像上完成,提高構(gòu)建效率。
注:這里的 FROM java6是需要存在在Docker本地倉(cāng)庫(kù)上的鏡像,如果不存在Jekins在執(zhí)行構(gòu)建過(guò)程中回去Docker Hub上拉取對(duì)應(yīng)鏡像,如果沒(méi)有則會(huì)報(bào)錯(cuò)。

6.基礎(chǔ)鏡像 Dockerfile

Java6的鏡像是從這里由來(lái),添加了tomcat以及JAVA環(huán)境變量
構(gòu)建Docker鏡像這里只做一下簡(jiǎn)單說(shuō)明

Jenkins構(gòu)建后操作
Jekins可以使用相關(guān)的Docker插件來(lái)實(shí)現(xiàn)此功能,但由于外網(wǎng)被墻安裝困難,這里采用Execute Shell方式實(shí)現(xiàn),也比較簡(jiǎn)單易于后期維護(hù)。

imagesid=`docker images|grep -i docker-test|awk "{print $3}"`
project=/root/.jenkins/workspace/Docker

if ! -n "$imagesid";then
   echo $imagesid "is null"
else
    docker rmi $imagesid -f
fi
cd $project

docker build -t docker-test .

if docker ps -a|grep -i docker;then
   docker rm -f docker
fi

docker run -it -d -p 8099:8080 --name docker docker-test

注:這里的殺掉老的容器和刪除舊的容器 grep的都是通過(guò)容器的名稱所匹配的,所以再啟動(dòng)啟動(dòng)容器的時(shí)候要指定容器名稱 –name,否則就是啟動(dòng)失敗。

7. 頁(yè)面訪問(wèn)驗(yàn)證

我Docker鏡像里的應(yīng)用就是一個(gè)index頁(yè)面,容器訪問(wèn)成功。

8. 擴(kuò)展

- 多節(jié)點(diǎn)升級(jí)

以上只是針對(duì)單節(jié)點(diǎn)本機(jī)Docker的打包部署方式,如需要多借點(diǎn)部署,不用多次編譯構(gòu)建,只需執(zhí)行一次構(gòu)建操作,把鏡像上傳到企業(yè)內(nèi)部私有倉(cāng)庫(kù),通過(guò)ansibles 實(shí)現(xiàn)多節(jié)點(diǎn)部署。

- Docker集群環(huán)境的部署方式

使用kubernets集群管理工具通過(guò)Deployment(1.2版本新增)文件實(shí)現(xiàn)滾動(dòng)升級(jí)容器(等同于應(yīng)用的部署)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/27968.html

相關(guān)文章

  • Docker在開(kāi)發(fā)、測(cè)試中的應(yīng)用

    摘要:對(duì)測(cè)試的影響讓單元測(cè)試運(yùn)行的更順暢單元測(cè)試驅(qū)動(dòng)開(kāi)發(fā)是一個(gè)很好的應(yīng)用程序開(kāi)發(fā)方式,單元測(cè)試往往也是和代碼一起被提交到代碼倉(cāng)庫(kù)中。但是很多單元測(cè)試通常依賴于很多其他服務(wù),而這些服務(wù)的標(biāo)準(zhǔn)化配置往往是一個(gè)難點(diǎn),如數(shù)據(jù)庫(kù)的搭建防火墻的配置等。 傳統(tǒng)的軟件開(kāi)發(fā)、測(cè)試、運(yùn)維需要三個(gè)團(tuán)隊(duì)在三個(gè)不同的環(huán)境中進(jìn)行,而三個(gè)環(huán)境的不同引發(fā)了很多的問(wèn)題。如:工作內(nèi)容的重復(fù);開(kāi)發(fā)環(huán)境中可運(yùn)行的程序在測(cè)試和運(yùn)維環(huán)...

    mating 評(píng)論0 收藏0
  • 智能運(yùn)維 | 如何做好持續(xù)集成——Jenkins on Mesos 實(shí)踐

    摘要:而持續(xù)集成的意義就在于減少風(fēng)險(xiǎn),和重復(fù)的過(guò)程,最終提高工作效率。第二級(jí)調(diào)度由被稱作的組件組成。能和不同類型的通信,每種由相應(yīng)的應(yīng)用集群管理。這是的任務(wù)啟動(dòng)過(guò)程。數(shù)人云運(yùn)維平臺(tái)持續(xù)集成實(shí)踐這是數(shù)人云運(yùn)維平臺(tái)的持續(xù)集成實(shí)踐。 今天小數(shù)給大家?guī)?lái)的又是十足的干貨:當(dāng)運(yùn)維遇到云計(jì)算,當(dāng)Docker遇到Mesos和Jenkins,會(huì)擦出怎樣的火花呢?且看來(lái)自數(shù)人云運(yùn)維工程師金燁的演講實(shí)錄分享——...

    lsxiao 評(píng)論0 收藏0
  • Docker 入門(三):持續(xù)集成、持續(xù)部署

    摘要:為了看起來(lái)清晰,我寫了一個(gè)文件,將這個(gè)文件和之前的放在同一個(gè)目錄中,可以用以下命令快速啟動(dòng),啟動(dòng)之后新構(gòu)建的鏡像和容器都名為。 showImg(https://segmentfault.com/img/remote/1460000014924499?w=883&h=515); 在軟件開(kāi)發(fā)過(guò)程中,如果我們每一次提交的代碼都能夠進(jìn)行一次完整的編譯、測(cè)試、打包、發(fā)布,就能及早發(fā)現(xiàn)問(wèn)題、及早修...

    newtrek 評(píng)論0 收藏0
  • Spring Cloud【使用jenkins持續(xù)部署】Gogs+jenkins+Docker Swa

    摘要:而所謂的持續(xù),就是說(shuō)每完成一個(gè)完整的部分,就向下個(gè)環(huán)節(jié)交付,發(fā)現(xiàn)問(wèn)題可以馬上調(diào)整。那么每完成一部分就測(cè)試,這是持續(xù)部署。這是一個(gè)免費(fèi)的源代碼,可以處理任何類型的構(gòu)建或持續(xù)集成。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口。 導(dǎo)讀: 很久沒(méi)有更新文章了 最近公司在使用Spring Cloud構(gòu)建的項(xiàng)目中經(jīng)常會(huì)持續(xù)發(fā)布變更頻繁,一天中會(huì)出現(xiàn)發(fā)布多次的情況 在這種情況下對(duì)測(cè)試環(huán)境做了改造 ...

    王笑朝 評(píng)論0 收藏0
  • 基于 jenkinsdocker 的個(gè)推持續(xù)集成平臺(tái)

    摘要:基于的特性,以及持續(xù)集成的需求,個(gè)推采用為持續(xù)集成搭建了一整套測(cè)試系統(tǒng)。個(gè)推持續(xù)集成流程以一個(gè)假設(shè)名為模塊為例,以開(kāi)發(fā)人員的視角闡述了持續(xù)集成的邏輯。 軟件開(kāi)發(fā)過(guò)程中,開(kāi)發(fā)成員經(jīng)常需要把自己工作集成到項(xiàng)目中,通常每個(gè)成員每天至少集成一次。如果項(xiàng)目較小,對(duì)外部的依賴較小,那么軟件集成可能不會(huì)是什么問(wèn)題。但是目前很多軟件項(xiàng)目特別是互聯(lián)網(wǎng)項(xiàng)目面臨著需求不明確,系統(tǒng)架構(gòu)復(fù)雜,任務(wù)分配混亂等一系...

    binaryTree 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<