摘要:集群環境的部署方式使用集群管理工具通過版本新增文件實現滾動升級容器等同于應用的部署
1. 思路&流程
Jenkins集成Docker鏡像實現自動發布與Jenkins發布mavne項目思路一樣總體流程 為:
Jenkins 拉去遠端源碼 —— gitl
實現應用打包 —— jenkins本地
把應用程序打包進Docker鏡像 —— Dockerfile
鏡像上傳到Docker私有倉庫 —— shell或者 Docker相關的Jekins插件
刪除老的Docker容器,運行新的Docker容器 —— shell腳本
2. 環境準備
Jenkins java maven Docker git git-Jenkins插件
配置Jenkins
Git倉庫可以開啟鉤子功能實現push代碼后自動觸發Jenkins構建功能,如需要可以在git倉庫中開啟此功能。
新建項目 選擇mavan風格項目或者自由風格項目(這里使用自由風格)
3. 配置Jenkins構建觸發器
說明1:觸發遠程構建 (例如,使用腳本) 這個選項就是上面提到配合git倉庫的鉤子功能實現代碼PUSH后Jenkins收到通知自動觸發構建項目的動作 說明2:Poll SCM日程表 定時檢查源碼變更,如果有更新就克隆下最新code下來,然后執行構建動作
每5分鐘檢查一次該項目分支是否有變動,如果有就拉去最新code執行構建動作 注:構建觸發器這里我們不做任何選擇,這里只是介紹這兩周功能,如有需要自行實現。
4. 構建日志輸出
查看docker本地倉庫
鏡像已經存在
容器已經在運行了
項目中的Dockerfile
Git倉庫的項目當中需要存放Dockerfie文件,用于打包應用到鏡像里面
5. Dockerfile內容如下:
為了避免構建過程過多時間執行過長,Dockerfile文件只做了一件事就是把Jenkins打包好的應用文件添加進容器里。其他所需的環境和操作都將在基礎鏡像上完成,提高構建效率。
注:這里的 FROM java6是需要存在在Docker本地倉庫上的鏡像,如果不存在Jekins在執行構建過程中回去Docker Hub上拉取對應鏡像,如果沒有則會報錯。
6.基礎鏡像 Dockerfile
Java6的鏡像是從這里由來,添加了tomcat以及JAVA環境變量 構建Docker鏡像這里只做一下簡單說明
Jenkins構建后操作
Jekins可以使用相關的Docker插件來實現此功能,但由于外網被墻安裝困難,這里采用Execute Shell方式實現,也比較簡單易于后期維護。
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的都是通過容器的名稱所匹配的,所以再啟動啟動容器的時候要指定容器名稱 –name,否則就是啟動失敗。
7. 頁面訪問驗證
我Docker鏡像里的應用就是一個index頁面,容器訪問成功。
8. 擴展
- 多節點升級
以上只是針對單節點本機Docker的打包部署方式,如需要多借點部署,不用多次編譯構建,只需執行一次構建操作,把鏡像上傳到企業內部私有倉庫,通過ansibles 實現多節點部署。
- Docker集群環境的部署方式
使用kubernets集群管理工具通過Deployment(1.2版本新增)文件實現滾動升級容器(等同于應用的部署)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27968.html
摘要:對測試的影響讓單元測試運行的更順暢單元測試驅動開發是一個很好的應用程序開發方式,單元測試往往也是和代碼一起被提交到代碼倉庫中。但是很多單元測試通常依賴于很多其他服務,而這些服務的標準化配置往往是一個難點,如數據庫的搭建防火墻的配置等。 傳統的軟件開發、測試、運維需要三個團隊在三個不同的環境中進行,而三個環境的不同引發了很多的問題。如:工作內容的重復;開發環境中可運行的程序在測試和運維環...
摘要:而持續集成的意義就在于減少風險,和重復的過程,最終提高工作效率。第二級調度由被稱作的組件組成。能和不同類型的通信,每種由相應的應用集群管理。這是的任務啟動過程。數人云運維平臺持續集成實踐這是數人云運維平臺的持續集成實踐。 今天小數給大家帶來的又是十足的干貨:當運維遇到云計算,當Docker遇到Mesos和Jenkins,會擦出怎樣的火花呢?且看來自數人云運維工程師金燁的演講實錄分享——...
摘要:為了看起來清晰,我寫了一個文件,將這個文件和之前的放在同一個目錄中,可以用以下命令快速啟動,啟動之后新構建的鏡像和容器都名為。 showImg(https://segmentfault.com/img/remote/1460000014924499?w=883&h=515); 在軟件開發過程中,如果我們每一次提交的代碼都能夠進行一次完整的編譯、測試、打包、發布,就能及早發現問題、及早修...
摘要:而所謂的持續,就是說每完成一個完整的部分,就向下個環節交付,發現問題可以馬上調整。那么每完成一部分就測試,這是持續部署。這是一個免費的源代碼,可以處理任何類型的構建或持續集成。容器是完全使用沙箱機制,相互之間不會有任何接口。 導讀: 很久沒有更新文章了 最近公司在使用Spring Cloud構建的項目中經常會持續發布變更頻繁,一天中會出現發布多次的情況 在這種情況下對測試環境做了改造 ...
摘要:基于的特性,以及持續集成的需求,個推采用為持續集成搭建了一整套測試系統。個推持續集成流程以一個假設名為模塊為例,以開發人員的視角闡述了持續集成的邏輯。 軟件開發過程中,開發成員經常需要把自己工作集成到項目中,通常每個成員每天至少集成一次。如果項目較小,對外部的依賴較小,那么軟件集成可能不會是什么問題。但是目前很多軟件項目特別是互聯網項目面臨著需求不明確,系統架構復雜,任務分配混亂等一系...
閱讀 1406·2021-11-19 11:38
閱讀 3562·2021-11-15 11:37
閱讀 803·2021-09-30 09:48
閱讀 946·2021-09-29 09:46
閱讀 893·2021-09-23 11:22
閱讀 1871·2019-08-30 15:44
閱讀 3388·2019-08-26 13:58
閱讀 2378·2019-08-26 13:26