Docker中實現(xiàn)CI(持續(xù)集成)和CD(持續(xù)交付/部署)的實戰(zhàn)詳解
1、前言
持續(xù)集成(CI/CD)是一種軟件開發(fā)的經(jīng)驗總結(jié)。它用于幫助開發(fā)團隊和交付團隊實現(xiàn)頻繁且快速的集成,以及測試他們的工作成果,以盡可能快地發(fā)現(xiàn)項目開發(fā)和交付工程中的錯誤。越頻繁,越早的項目集成與項目交付,則意味著問題會被越早發(fā)現(xiàn)。因此,通過持續(xù)集成 ( CI/CD)可以及時發(fā)現(xiàn)和解決代碼故障,提高代碼質(zhì)量,減少故障處理成本等。
2、什么是CI/CD
CI/CD 是一種通過在應(yīng)用的開發(fā)階段引入自動化來頻繁向客戶交付應(yīng)用的方法。CI/CD 包含以下3 個概念:
- CI(Continuous Integration):持續(xù)集成。
- CD(Continuous Delivery):持續(xù)交付。
- CD(Continuous Deployment):持續(xù)部署。
而Jenkins作為一個開源的,也是被使用最多的持續(xù)集成工具,在項目中也是被廣泛使用。今天就以Jenkins為例來進(jìn)行介紹。
3、部署Jenkins
由于Jenkins是基于Java語言開發(fā)的,因此需要下安裝JDK環(huán)境,這里安裝了JDK8.
3.1、下載Jenkins
可以直接從官網(wǎng)下載Jenkins.war然后上傳到服務(wù)器。Jenkins download and deployment
需要注意的是jenkins支持的JDK版本,從官方文檔中可以看出幾個LTS版本所需要的java環(huán)境。
由于我們JDK環(huán)境是java8,因此這里下載這里下載的是2.346.3版本的war包。
快速下載地址:Index of /war-stable/2.346.3
wget --no-check-certificate https://get.jenkins.io/war-stable/2.346.3/jenkins.war
這里由于鏡像問題,需要多嘗試幾次。
3.2、啟動Jenkins
下載后,啟動Jenkins:
java -jar jenkins.war
輸出以下信息則表示啟動成功。
3.3、訪問Jenkins頁面
瀏覽器訪問http://192.168.74.128:8080/。
后續(xù)的Jenkins安裝步驟這里忽略,教程應(yīng)該很多。
安裝完成后,進(jìn)入到Jenkins主頁面。
4、Jenkins部署一個應(yīng)用
傳統(tǒng)的Jenkins構(gòu)建應(yīng)用這里就不贅述了,這里是Docker專欄,所以我們重點講下面一節(jié),實現(xiàn)Docker應(yīng)用的持續(xù)集成和部署。
5、Jenkins實現(xiàn)Docker應(yīng)用的持續(xù)集成和部署
在Docker應(yīng)用開發(fā)中,最常見的就是使用Dockerfile文件,可以使用代碼倉庫管理他。
一般來說企業(yè)中的代碼倉庫都是私有的,部門會自己搭建私有的代碼倉庫,如SVN、GitLab等。這里方便演示,我就不自己搭了,使用Github直接演示(主要還是懶)。
部署Jenkins的服務(wù)器,必須提前安裝Git。
5.1、創(chuàng)建Dockerfile
在我們本地創(chuàng)建一個Dockerfile文件,里面實現(xiàn)一個nginx的簡單頁面:
FROM nginx RUN echo '<h1>this is jenkins build demo,version:1</h1>' > /usr/share/nginx/html/index.html
將文件提交到Github倉庫中。
同時在倉庫中的Settings中配置webhook,Payload URL配置我們Jenkins的地址,用于每次我們提交代碼時都向Jenkins發(fā)送一個http請求。
5.2、集成Jenkins和Docker
Jenkins中創(chuàng)建一個Freestyle project的任務(wù)。
在源碼管理中配置Git相關(guān)信息。
接著在構(gòu)建選項中,選擇“執(zhí)行shell”。
在命令對話框中輸入構(gòu)架容器命令:
docker build -t my_jenkins_docker_demo . docker run -d -p 8081:80 my_jenkins_docker_demo
點擊保存后,在點擊立即構(gòu)建。
構(gòu)建成功后,訪問地址:http://192.168.74.128:8081:
6、小結(jié)
至此,完成了Jenkins和Docker的集成,從而可以實現(xiàn)應(yīng)用的CI/CD。在實際項目開發(fā)中,可能會涉及大量的程序代碼,以及依賴的庫和環(huán)境,但使用Jenkins實現(xiàn)CI/CD的過程都大同小異。
以上就是Docker中實現(xiàn)CI和CD的實戰(zhàn)詳解的詳細(xì)內(nèi)容,更多關(guān)于Docker實現(xiàn)CI和CD的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
centos6使用docker部署zookeeper操作示例
這篇文章主要介紹了centos6使用docker部署zookeeper操作,結(jié)合實例形式分析了centos6平臺使用docker部署zookeeper相關(guān)命令與使用技巧,需要的朋友可以參考下2020-02-02容器化技術(shù)架構(gòu)jenkins?docker?k8s腳本淺析
本篇博文不是詳細(xì)介紹容器技術(shù)的,而是具體的實踐。此篇博文分為兩個階段,分別是ci,cd。包含三部分內(nèi)容,分別是jenkins,docker,k8s的腳本淺析2022-03-03docker如何創(chuàng)建nginx圖片服務(wù)器
這篇文章主要介紹了docker如何創(chuàng)建nginx圖片服務(wù)器問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01詳解Docker 容器基礎(chǔ)系統(tǒng)鏡像打包
這篇文章主要介紹了詳解Docker 容器基礎(chǔ)系統(tǒng)鏡像打包,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12