理艷榮
(廣州商學院,廣東 廣州 511363)
云計算、大數(shù)據(jù)、物聯(lián)網(wǎng)技術的普及標志著第三次信息化浪潮的到來。傳統(tǒng)的應用部署過程復雜、配置繁瑣、成本較高且可移植性差。Docker以其輕量靈活,易于遷移,資源利用率高等特點受到業(yè)界廣泛關注,越來越多企業(yè)將自己的傳統(tǒng)應用遷移到Docker環(huán)境下。Docker容器將軟件與其依賴環(huán)境打包起來,以鏡像方式交付,以容器的方式運行,使得軟件所依賴的環(huán)境與實際環(huán)境相同,而且只需要進行一次構建,即可在其他的機器中正常運行[1]?;贒ocker容器應用部署管理平臺,滿足了開發(fā)者開發(fā)環(huán)境的需求,使得虛擬機的資源消耗和托管環(huán)境更簡化。利用Docker容器可以提供給開發(fā)者輕量級開發(fā)環(huán)境和各種應用程序的運行環(huán)境[2]。
DaoCloud采用Docker輕量級虛擬化技術,針對分布式應用的痛點,推出支持多種語言和后臺服務的 DaoCloud持續(xù)集成服務。DaoCloud可以實現(xiàn)軟件即服務化的持續(xù)集成服務,并且可以完成自動測試。一旦用戶完成了代碼提交,就會自動觸發(fā)自動化的測試,可以完成代碼質量檢測。通過Docker鏡像的構建可以試驗容器化應用發(fā)布,依托DaoCloud遍布全球的云服務節(jié)點,可以實現(xiàn)秒級的全球業(yè)務啟動與關閉。
Docker是一套輕量級操作系統(tǒng)虛擬化解決方案,它由go語言編寫,可以輕松地為任何應用創(chuàng)建一個輕量級的、可移植的、自給自足的容器。Docker的生命周期包含3個部分:容器、鏡像、倉庫。容器是由鏡像實例化而來的,鏡像可以從倉庫里直接下載拉取[3]。Docker讓開發(fā)者可以打包應用以及依賴包到一個可移植的容器中,然后發(fā)布到任何流行的機器上,是目前主流的容器引擎技術[4]。
DaoCloud作為企業(yè)級容器云平臺,基于Docker容器技術實現(xiàn)應用的快速部署、持續(xù)交付及高效運維[5]。在項目開發(fā)階段可以做到持續(xù)集成。將項目包上傳到GitHub,通過GitHub與DaoCloud的關聯(lián),在特定的云主機上運行鏡像,從而完成整個部署過程。同時DaoCloud擁有多種主機接入方式,用戶可以選擇接入云平臺、集群、云主機或者自有主機等方式,并且學習用戶可以使用膠囊主機進行學習試用等。DaoCloud的核心內容包括:DevOps、微服務、容器化、持續(xù)交付、云平臺等。通過DaoCloud平臺,可以實現(xiàn)云原生開發(fā),具有讓開發(fā)者輕松玩轉容器虛擬化,快速掌握新一代互聯(lián)網(wǎng)浪潮的前沿技術。
部署持續(xù)集成項目的前期準備:在自己的GitHub賬號上傳要部署的項目、在DaoCloud平臺上使用的云主機。根據(jù)持續(xù)集成的原理,最終可以實現(xiàn)鏡像隨著GitHub上項目的更新而更新,并且在主機上部署最新的應用。本文研究的是Spring Boot項目基于DaoCloud平臺部署的過程,項目需要數(shù)據(jù)庫的支持。部署的過程中需要利用2個鏡像分別是:項目鏡像、數(shù)據(jù)庫鏡像(MySQL)。
操作步驟:
由于項目是以Spring Boot為技術開發(fā)核心的,需要在項目中的配置文件中增加Docker插件。本步驟應用容器化的基礎。
在本地主機上將項目打包,讓本地虛擬機獲取到此項目。虛擬機終端輸入命令:mvn clean使其產(chǎn)生target目錄。使用maven構建jar,運行mvn package。再運行命令行:docker build生成項目鏡像以及用于DaoCloud構建鏡像的Dockerfile文件。最后執(zhí)行命令:docker images就能看到生成的鏡像。
將完成的項目鏡像托管至Github倉庫。同時需要在DaoCloud平臺上完成GitHub平臺的綁定操作。這樣就可以在DaoCloud平臺上同步GitHub上的項目。
在DaoCloud平臺上創(chuàng)建新項目。從Github平臺獲取上傳的項目鏡像,選擇創(chuàng)建新項目,觸發(fā)方式選擇手動觸發(fā)master。
項目創(chuàng)建成功后開始部署應用。部署應用選擇通過鏡像部署,找到該項目鏡像。接著填寫項目應用名稱、端口號等。信息填寫完畢,點擊開始部署應用。
項目數(shù)據(jù)存儲于MySQL數(shù)據(jù)庫,因此需要在DaoCloud平臺上創(chuàng)建一個MySQL鏡像,該鏡像于平臺精選鏡像內可找到,MySQL通過一鍵部署的方式成功部署。
項目所有數(shù)據(jù)可直接遷移至DaoCloud部署的數(shù)據(jù)庫,即能利用云上數(shù)據(jù)庫存儲項目數(shù)據(jù)。
通過主機的IP信息以及容器映射到主機上的端口就能訪問到部署成功的應用,并能正常地操作使用自己部署的應用。
以Spring Boot為技術核心的項目,在實現(xiàn)項目部署過程中,首先考慮到如何才能使項目適配Docker容器,成為一個Docker鏡像,在項目中添加了Docker的插件之后,利用虛擬機對項目進行鏡像處理即插件的配置以及Dockerfile的生成。通過在DaoCloud平臺上綁定GitHub賬號,實現(xiàn)DaoCloud與Github關聯(lián),把項目成功存到鏡像庫。在DaoCloud Services平臺上創(chuàng)建了個人項目鏡像并成功發(fā)布之后,可以利用DaoCloud Developer部署應用對項目進行測試。部署 MySQL數(shù)據(jù)庫來支持項目數(shù)據(jù)的存儲,項目成功被部署到DaoCloud平臺后,利用項目自定義好的映射端口以及云主機IP,就能訪問部署的項目。部署工程的項目可以支持傳統(tǒng)服務器發(fā)布項目的所有操作,并且更加高效、靈活。
本次設計主要是實現(xiàn)基于DaoCloud部署個人Spring Boot項目應用。項目利用數(shù)據(jù)庫MySQL進行底層數(shù)據(jù)存儲。基礎在于將項目應用轉換為鏡像,為實現(xiàn)容器化部署做準備,最終可以實現(xiàn)一份鏡像,多份部署。利用DaoCloud對云原生應用的支持特性,可以實現(xiàn)自動化地持續(xù)集成,并且秒級啟動與停止應用。對比傳統(tǒng)的應用部署方式具有快速、便捷、高效的特點,在實際開發(fā)與應用中具有很大的使用價值。相信容器化的部署方式,在不久的將來會被人們越來越廣泛地采用。