Docker最全教程——从理论到实战(九)
在本系列教程中,筆者希望將必要的知識點(diǎn)圍繞理論、流程(工作流程)、方法、實(shí)踐來進(jìn)行講解,而不是單純的為講解知識點(diǎn)而進(jìn)行講解。也就是說,筆者希望能夠讓大家將理論、知識、思想和指導(dǎo)應(yīng)用到工作的實(shí)際場景和實(shí)踐之中,而不是拿著字典寫文章,抱著寶典寫代碼。至于很多具體的語法、技術(shù)細(xì)節(jié),除了常用的知識點(diǎn),筆者更希望大家閱讀官方文檔——畢竟看官網(wǎng)比看書靠譜多了,官網(wǎng)會一直更新和改進(jìn),而書和教程自出版或發(fā)布之后,基本上就“死“了。
本系列教程預(yù)計(jì)全部完成還需要2到3個(gè)月的時(shí)間。在這個(gè)過程中,您可以加入我們的QQ群(85318032)一起討論、交流和分享這一塊的技術(shù)。我們也希望得到大家的支持,請多多點(diǎn)贊或者打賞一杯咖啡,你們的支持是我們前進(jìn)的最大動力!
Azure DevOps,以前叫VSTS,現(xiàn)在被微軟改名部正式更名為Azure?DevOps,說明微軟云為先之心仍然蠢蠢欲動。不過和VSTS一樣,微軟都提供了免費(fèi)的使用額度,對于小團(tuán)隊(duì)和個(gè)人開發(fā)者來說,完全是足夠了。
DevOps(Development和Operations的組合詞)是一組過程、方法與系統(tǒng)的統(tǒng)稱,用于促進(jìn)開發(fā)(應(yīng)用程序/軟件工程)、技術(shù)運(yùn)營和質(zhì)量保障(QA)部門之間的溝通、協(xié)作與整合。它是一種重視“軟件開發(fā)人員(Dev)”和“IT運(yùn)維技術(shù)人員(Ops)”之間溝通合作的文化、運(yùn)動或慣例。透過自動化“軟件交付”和“架構(gòu)變更”的流程,來使得構(gòu)建、測試、發(fā)布軟件能夠更加地快捷、頻繁和可靠。它的出現(xiàn)是由于軟件行業(yè)日益清晰地認(rèn)識到:為了按時(shí)交付軟件產(chǎn)品和服務(wù),開發(fā)和運(yùn)營工作必須緊密合作。
DevOps的引入能對產(chǎn)品交付、測試、功能開發(fā)和維護(hù)(包括──曾經(jīng)罕見但如今已屢見不鮮的──“熱補(bǔ)丁”)起到意義深遠(yuǎn)的影響。在缺乏DevOps能力的組織中,開發(fā)與運(yùn)營之間存在著信息“鴻溝”──例如運(yùn)營人員要求更好的可靠性和安全性,開發(fā)人員則希望基礎(chǔ)設(shè)施響應(yīng)更快,而業(yè)務(wù)用戶的需求則是更快地將更多的特性發(fā)布給最終用戶使用。這種信息鴻溝就是最常出問題的地方。
DevOps經(jīng)常被描述為“開發(fā)團(tuán)隊(duì)與運(yùn)營團(tuán)隊(duì)之間更具協(xié)作性、更高效的關(guān)系”。由于團(tuán)隊(duì)間協(xié)作關(guān)系的改善,整個(gè)組織的效率因此得到提升,伴隨頻繁變化而來的生產(chǎn)環(huán)境的風(fēng)險(xiǎn)也能得到降低。
總之,通過DevOps,各專業(yè)團(tuán)隊(duì)之間的協(xié)調(diào)和協(xié)作得到改善,縮短了將更改提交到系統(tǒng)與將更改投入到生產(chǎn)之間的時(shí)間。它還可確保此過程符合安全性和可靠性標(biāo)準(zhǔn)。結(jié)果:產(chǎn)品質(zhì)量改善、交付速度加快、客戶滿意度提升。
在很多企業(yè)中,應(yīng)用程序發(fā)布是一項(xiàng)涉及多個(gè)團(tuán)隊(duì)、壓力很大、風(fēng)險(xiǎn)很高的活動。然而在具備DevOps能力的組織中,應(yīng)用程序發(fā)布的風(fēng)險(xiǎn)很低,原因如下:
1.?減少變更范圍
與傳統(tǒng)的瀑布式開發(fā)模型相比,采用敏捷或迭代式開發(fā)意味著更頻繁的發(fā)布、每次發(fā)布包含的變化更少。由于部署經(jīng)常進(jìn)行,因此每次部署不會對生產(chǎn)系統(tǒng)造成巨大影響,應(yīng)用程序會以平滑的速率逐漸生長。
2.?加強(qiáng)發(fā)布協(xié)調(diào)
靠強(qiáng)有力的發(fā)布協(xié)調(diào)人來彌合開發(fā)與運(yùn)營之間的技能鴻溝和溝通鴻溝;采用電子數(shù)據(jù)表、電話會議、即時(shí)消息、企業(yè)門戶(wiki、sharepoint)等協(xié)作工具來確保所有相關(guān)人員理解變更的內(nèi)容并全力合作。
3.?自動化
強(qiáng)大的部署自動化手段確保部署任務(wù)的可重復(fù)性、減少部署出錯(cuò)的可能性。
與傳統(tǒng)開發(fā)方法那種大規(guī)模的、不頻繁的發(fā)布(通常以“季度”或“年”為單位)相比,敏捷方法大大提升了發(fā)布頻率(通常以“天”或“周”為單位)。減少變更范圍與傳統(tǒng)的瀑布式開發(fā)模型相比,采用敏捷或迭代式開發(fā)意味著更頻繁的發(fā)布、每次發(fā)布包含的變化更少。由于部署經(jīng)常進(jìn)行,因此每次部署不會對生產(chǎn)系統(tǒng)造成巨大影響,應(yīng)用程序會以平滑的速率逐漸生長。加強(qiáng)發(fā)布協(xié)調(diào)靠強(qiáng)有力的發(fā)布協(xié)調(diào)人來彌合開發(fā)與運(yùn)營之間的技能鴻溝和溝通鴻溝;采用電子數(shù)據(jù)表、電話會議、即時(shí)消息、企業(yè)門戶(wiki、sharepoint)等協(xié)作工具來確保所有相關(guān)人員理解變更的內(nèi)容并全力合作。強(qiáng)大的自動化部署手段能夠確保部署任務(wù)的可重復(fù)性、減少部署出錯(cuò)的可能性。
使用容器,可輕松地持續(xù)生成和部署應(yīng)用程序。
Azure DevOps 可以通過設(shè)置持續(xù)版本以生成容器映像和業(yè)務(wù)流程,讓我們能更快、更可靠地進(jìn)行部署。以下是一個(gè)適用于容器和Azure的CI/CD?流程:
步驟說明:
Azure?DevOps服務(wù)涵蓋了整個(gè)開發(fā)生命周期,可幫助開發(fā)人員更快地高質(zhì)量地交付軟件,其提供了Azure Pipelines、Azure Boards、Azure Artifacts、Azure Repos和Azure Test Plans。關(guān)于Azure?DevOps我們就介紹到這里,畢竟是免費(fèi)介紹。
現(xiàn)在,我們需要側(cè)重介紹的是Pipelines,也就是代碼流水線。看,多形象,所以以前自詡為碼農(nóng)是錯(cuò)誤的,我們應(yīng)該是碼工,廣大流水線工人的一環(huán),無產(chǎn)階級之一,共產(chǎn)主義接班人。不好意思,又偏題了,我們繼續(xù):
首先,我們需要定義一個(gè)流水線,為了便于演示,我這里就定義一些針對Docker的簡單步驟,大家可以按需添加步驟,比如單元測試步驟等等。
如圖所示,步驟很簡單,首先設(shè)置代碼源,這里我們直接對接Magicodes.Admin框架的git庫地址。Git庫地址大家可以在這里找到:
https://gitee.com/xl_wenqiang/Magicodes.Admin.Core
因?yàn)榇a是托管再碼云,所以我們選擇如上圖所示的最后一種方式,并且選擇對應(yīng)的分支。
接下來,我們需要添加job和task。job添加一個(gè)默認(rèn)的即可,無需設(shè)置什么條件和參數(shù)。接下來我們添加task,實(shí)際上就是步驟。
第一步,構(gòu)建鏡像。
我們需要添加一個(gè)docker task:
然后設(shè)置command命令為build,也就是構(gòu)建:
構(gòu)建配置我們可以根據(jù)自己的需求來設(shè)置,比如根據(jù)分支設(shè)置鏡像版本等等。
第二步,登錄騰訊云鏡像倉庫并且推送。
這一步,就有點(diǎn)門檻了,原生的docker命令并不好使,因?yàn)?span style="font-family:Calibri;">task之間的上下文是斷開的,也就是login了你也沒法push。這時(shí)候,還是命令行靠譜,簡單粗暴。所以我們需要添加一個(gè)Command line task:
然后編寫命令腳本:
簡單粗暴的兩個(gè)步驟就搞定了,大家可以根據(jù)自己的持續(xù)集成流程來定制,畢竟微軟在開發(fā)者服務(wù)這塊淫蕩多年,還是相當(dāng)給力的。我們可以初步看看支持的task:
非常之多,足夠我們隨便玩了。而且玩壞了還不用賠錢。
接下來,跑起來:
點(diǎn)開還能看到詳細(xì)的過程:
激不激動,簡單不簡單?就這么幾下就搞定了。產(chǎn)品很強(qiáng)大,就是拉取代碼有點(diǎn)慢,看起來是托管在國外。順手一查,額,美國:
因此,我們不是很推薦使用Azure?DevOps來完成CI,網(wǎng)絡(luò)的延遲足夠拖垮我們焦慮的神經(jīng)。但是如果我們的代碼托管在Github,那么使用Azure?DevOps是不錯(cuò)的選擇。在接下來的教程中,我們會講解如何打造自己的Github開源庫的CI流程——不僅完全自動化,而且還支持在readme頁面添加各種動態(tài)圖標(biāo)。
相關(guān)文章
Docker最全教程——從理論到實(shí)戰(zhàn)(一)
Docker最全教程——從理論到實(shí)戰(zhàn)(二)
Docker最全教程——從理論到實(shí)戰(zhàn)(三)
Docker最全教程——從理論到實(shí)戰(zhàn)(四)
Docker最全教程——從理論到實(shí)戰(zhàn)(五)
Docker最全教程——從理論到實(shí)戰(zhàn)(六)
Docker最全教程——從理論到實(shí)戰(zhàn)(七)
Docker最全教程——從理論到實(shí)戰(zhàn)(八)? ??
總結(jié)
以上是生活随笔為你收集整理的Docker最全教程——从理论到实战(九)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “被狗啃”的按钮引发的开源社区信任危机
- 下一篇: NumSharp v0.6.1 科学计算