基于Docker的分布式開發環境的搭建方法及裝置的制造方法
【專利摘要】本發明公開了一種基于Docker的分布式開發環境的搭建方法,包括步驟:接收用戶從本地預存dockerfile文件列表中選擇dockerfile文件的選擇信息;判斷選擇的dockerfile文件是否是最新dockerfile文件;若是,則根據所述選擇的dockerfile文件從代碼倉庫中復制與該子系統的源代碼;根據最新dockerfile文件構建子系統的鏡像;通過鏡像構建docker容器并在docker容器中運行子系統的源代碼,該搭建方法實現了分布式開發環境的單機部署,本發明還公開了應用該搭建方法的搭建裝置。
【專利說明】
基于Docker的分布式開發環境的搭建方法及裝置
技術領域
[0001]本發明涉及計算機領域,尤其涉及一種基于Docker的分布式開發環境的搭建方法及裝置。
【背景技術】
[0002]當前分布式系統開發的形式已經成為主流的開發形態,一個項目常匹配有數十個服務,因此往往需要開發數臺服務器來支撐,且各個服務器的部署也各不相同,搭建過程將耗費時力和資源,但若是公用一套開發環境,又容易造成服務器彼此之間的相互干擾,因此需要搭建一套簡單,可操作,且可避免服務器之間相互干擾的開發環境。
【發明內容】
[0003]有鑒于此,實有必要提供一種將復雜的分布式開發環境從多個遠程服務器集中到單機部署的基于Docker的分布式開發環境的搭建方法以及搭建裝置。
[0004]本發明實施例的技術方案為:一種基于Docker的分布式開發環境的搭建方法,包括步驟:接收用戶從本地預存dockerf ile文件列表中選擇dockerf ile文件的選擇信息,其中,一個所述dockerf ile文件對應匹配一個分布式服務的子系統;將選擇的dockerf ile文件與代碼倉庫中的dockerfile文件進行比較,并判斷所述選擇的dockerfile文件是否是與其相匹配的子系統的最新dockerf ile文件;若所述選擇的dockerf ile文件是所述子系統的所述最新dockerf ile文件,則根據所述選擇的dockerf ile文件從所述代碼倉庫中復制與其相匹配的子系統的源代碼;根據所述最新dockerfile文件構建所述子系統的鏡像;以及基于所述鏡像設置docker容器參數來構建docker容器并在所述docker容器中來運行所述源代碼,用于完成分布式環境的部署。
[0005]—種基于Docker的分布式開發環境的搭建裝置,包括彼此之間建立通訊連接的Ecl ipse插件、代碼開發IDE以及boot2docker虛擬機,所述代碼開發IDE還與代碼倉庫建立通訊連接,所述代碼倉庫用于存儲所有分布式服務的子系統的源代碼以及dockerfile文件,所述Eclipse插件包括第一接收模塊以及第一發送模塊;所述代碼開發IDE包括第二接收模塊、判斷模塊、復制模塊以及代碼目錄模塊;所述boot2docker虛擬機包括共享模塊、鏡像生成模塊以及容器構建模塊,所述第一接收模塊用于所述Eclipse插件接收用戶于從本地預存的dockerf ile文件列表中選擇dockerf ile文件的選擇信息,一個所述dockerf ile文件對應匹配一個所述子系統;所述第一發送模塊用于發送所述選擇信息給所述代碼開發IDE的所述第二接收模塊;所述判斷模塊用于所述代碼開發IDE將選擇的dockerf i Ie文件與所述代碼倉庫中的dockerf i Ie文件進行比較,并判斷所述選擇的dockerf i Ie文件是否是與其相匹配的子系統的最新dockerf ile文件;所述復制模塊用于當所述選擇的dockerf ile文件是所述子系統的所述最新dockerfile文件時,所述代碼開發IDE根據所述選擇的dockerfile文件從所述代碼倉庫中復制相匹配的子系統的源代碼;所述代碼目錄模塊用于存儲所述復制模塊獲取的所述源代碼以及本地預存的dockerfile文件;所述鏡像生成模塊與所述代碼目錄模塊連接,用于讀取所述最新dockerf i Ie文件,并根據所述最新dockerfile文件構建子系統的鏡像;所述容器構建模塊用于所述鏡像構建后,設置docker容器參數來構建docker容器并與所述代碼目錄模塊連接來讀取所述源代碼,可使所述源代碼可在所述docker容器中運行。
[000?]基于上述基于Docker的分布式開發環境的搭建方法和搭建裝置,利用了Docker技術,代碼開發IDE存儲有子系統的源代碼以及dockerf ile文件,boot2docker虛擬機還與代碼開發IDE建立連接來讀取所述子系統的源代碼和dockerf i Ie文件,并根據dockerf i Ie文件建立與分布式服務的子系統相匹配的鏡像和docker容器,以使子系統的該源代碼可在相匹配的docker容器中運行;該鏡像和docker容器均部署在同一 boot2docker虛擬機上,而代碼開發IDE和b00t2d0cker虛擬機又部署在同一開發主機上,從而將復雜的分布式開發環境從多個遠程服務器集中到單機部署。
【附圖說明】
[0007]圖1為本發明實施例基于Docker的分布式開發環境的搭建方法的流程圖。
[0008]圖2為本發明實施例基于Docker的分布式開發環境的搭建裝置的結構示意圖。
[0009]圖3為本發明實施例基于Docker的分布式開發環境的搭建裝置的功能模塊圖。
【具體實施方式】
[0010]下面將結合本發明實施方式中的附圖,對實施方式中的技術方案進行清楚、完整的描述。
[0011 ]本發明實施例提供的分布式開發環境的搭建方法,利用了 Docker技術,將子系統的源代碼從代碼倉庫復制到代碼開發IDE,b00t2d0cker虛擬機還與代碼開發IDE建立連接,用于該boot2docker虛擬機可共享子系統的源代碼;還在boot2docker虛擬機建立與分布式服務的子系統相匹配的鏡像和docker容器,以使子系統的該源代碼可在相匹配的docker容器中運行。由于鏡像和docker容器部署在同一b00t2d0cker虛擬機上,而代碼開發IDE和boot2docker虛擬機又部署在同一windows開發主機上,而windows主機作為代碼IDE開發環境,負載代碼的編寫與同步。從而將原本需要將子系統部署在多個遠程服務器的分布式開發環境簡化,節省了資源,降低了開發成本。
[0012]請參看圖1,本實施中基于Docker的分布式開發環境的搭建方法包括步驟:
[0013]步驟SlOl:接收用戶從本地預存dockerf ile文件列表中選擇dockerf ile文件的選擇信息,其中,一個dockerf i Ie文件對應匹配一個分布式服務的子系統。具體地,本地預存有dockerf ile文件列表,用戶根據dockerf ile文件列表可選擇所需要的子系統提供的服務對應的dockerfile文件來構建與其相匹配的鏡像。例如,用戶需要檢索服務,此時可選擇提供檢索服務的子系統所對應的dockerf ile文件。本實施例子中,本地預存dockerf ile文件存儲在代碼開發IDE中,Eclipse插件與代碼開發IDE建立通訊連接。利用Eclipse插件技術,Ec I ipse插件將讀取存儲在代碼開發IDE中的本地預存的dockerf ile文件,并其工作臺workbench的圖形框架SWT中以可視化圖形展示預存的dockerf ile文件列表。
[0014]步驟S103:將選擇的dockerf ile文件與代碼倉庫中的dockerf ile文件進行比較,并判斷該選擇的dockerf ile文件是否是與其相匹配的子系統的最新dockerf ile文件。具體地,為了獲取到子系統的最新dockerf ile文件,就需要對用戶選擇的dockerf ile文件進行判斷其是否是該子系統最新dockerfile文件。本實施例子中,代碼倉庫設于遠程服務器上,代碼倉庫中存儲有分布式服務的子系統的源代碼和dockerfile文件。為了獲取到子系統的最新dockerf ile文件,就需要對用戶選擇的dockerf ile文件與代碼倉庫中的dockerf ile文件比較。
[0015]步驟S104:若所述選擇的dockerf ile文件是所述子系統的最新dockerf ile文件,則將根據選擇的dockerfile文件從代碼倉庫中復制與其相匹配的子系統的源代碼。
[0016]步驟S105:若所述選擇的dockerfile文件不是其相匹配的子系統的所述最新dockerf ile文件,則將根據所述選擇的dockerf ile文件從所述代碼倉庫中復制所述子系統的所述源代碼以及所述最新dockerf ile文件。
[0017]步驟S107:根據所述最新dockerf i I e文件構建所述子系統的鏡像。具體地,dockerf ile文件用來描述構建鏡像的步驟,因此根據dockerf ile文件來自從構建與其匹配的鏡像。dockerfile文件中包含了對各自子系統的代碼編譯、打包和構建部署腳本,因此代碼更新后,通過新的dockerf ile文件構建的新的鏡像中就自動添加了新的應用。本實施例子中,b00t2d0cker虛擬機與代碼開發IDE建立掛載以共享所述源代碼和或所述最新dockerf ile 文件。
[0018]步驟S108:所述鏡像構建成功后,設置docker容器參數來構建docker容器并在所述docker容器中來運行所述源代碼,用于完成分布式環境的部署。具體地,基于鏡像創建并啟動docker容器后,此時,boot2docker虛擬機將與代碼開發IDE共享的子系統的源代碼映射到對應的子系統的docker容器中,在docker容器運行源代碼,完成分布式環境的部署。此時,docker容器之間是彼此隔離的,可避免了發生相互干擾的情況。
[0019]上述搭建方法構建與分布式服務的子系統匹配的鏡像和docker容器,以使子系統的該源代碼可在相匹配的docker容器中運行,從而將復雜的分布式開發環境從多個遠程服務器集中到單機部署,節省了資源和開發成本,且通過構建的相互彼此隔離的docker容器,還可避免開發干擾。
[°02°] 相對與上述實施例,進一步地,本實施例子中S107中boot2docker虛擬機根據所述最新dockerf ile文件構建所述子系統的鏡像的步驟之前還包括:
[0021]步驟S106:從基礎鏡像倉庫中獲取基礎鏡像。具體地,基礎鏡像倉庫用于存儲基礎鏡像,獲取到用來描述構建鏡像的步驟的最新dockerfile文件以及基礎鏡像后,根據最新dockerf ile文件的內容指示構建構建具有特定功能的鏡像。本實施例中,boot2docker虛擬機與代碼開發與基礎鏡像倉庫建立通訊連接。
[0022]相對與上述實施例,進一步地,步驟SlOI中接收用戶從本地預存dockerf i Ie文件列表中選擇dockerf ile文件的選擇信息的步驟之后還包括:
[0023]步驟S102:生成復制指令,該復制指令包含選擇的dockerfile文件的選擇信息。具體地,本實施例子中,Eclipse插件接收到選擇信息后,生成復制指令并發送給代碼開發IDE。代碼開發IDE接收到復制指令后才進行步驟S103。
[0024]請參看圖2和圖3,本發明實施例提供的一種基于Docker的分布式開發環境的搭建裝置100包括了彼此之間建立通訊連接的boot2docker虛擬機101、代碼開發IDE 201以及Eclipse插件301。代碼開發IDE201還與代碼倉庫建立通訊連接,用于從代碼倉庫中獲取分布式服務的子系統的源代碼以及dockerfile文件,且代碼開發IDE 201將存儲其獲取的源代碼以及dockerf ile文件以及本地預存的dockerf ile文件;而130<^2(1001^1'虛擬機101與代碼開發IDE 201建立通訊連接以共享源代碼以及dockerfile文件,并構建與子系統相匹配的鏡像和docker容器,以使子系統的該源代碼可在相匹配的docker容器中運行。本實施例子中鏡像和docker容器部署在同一boot2docker虛擬機上,而代碼開發IDE 201和boot2docker虛擬機101又部署在同一windows開發主機上。
[°°25] Eclipse插件301基于Eclipse插件技術,其將從代碼開發IDE 201中讀取本地預存的dockerf ile文件在Ecl ipse插件301的工作臺wordbench中的圖形框架SWT中以可視化圖形列表展示。又因為一個所述dockerfile文件對應匹配一個所述子系統,因此,用戶可從本地預存的dockerfile文件列表中選擇能夠提供所需某項服務的子系統所對應的dockerf ile文件,并將用戶的選擇信息發送給代碼開發IDE 201 Acl ipse插件301包括顯示模塊302、第一接收模塊303以及第一發送模塊304。
[0026]顯示模塊302用于將Eclipse插件301從代碼開發IDE 201中讀取本地預存的dockerf i Ie文件以可視化圖形列表展示。
[0027]第一接收模塊303用于接收用戶于從dockerf ile文件列表中選擇dockerf ile文件的選擇信息。
[0028]第一發送模塊304用于發送選擇信息給代碼開發IDE 201。
[0029]所述代碼開發IDE201包括代碼目錄模塊202、判斷模塊203、復制模塊204以及第二接收模塊205。
[0030]第二接收模塊205接收第一發送模塊304用于發送選擇信息。
[0031]判斷模塊203用于第二接收模塊205接收選擇信息后,將選擇的dockerfile文件與所述代碼倉庫中的dockerf i Ie文件進行比較,并判斷所述選擇的dockerf i Ie文件是否是與其相匹配的子系統的最新dockerfile文件。
[0032]復制模塊204用于當判斷模塊203判斷出所述選擇的dockerfile文件是所述子系統的所述最新dockerf ile文件時,根據所述選擇的dockerf ile文件從所述代碼倉庫中復制相匹配的子系統的源代碼。或者當判斷模塊203判斷出所述選擇的dockerfile文件不是其相匹配的子系統的所述最新dockerf ile文件,則所述代碼開發模塊將根據所述選擇的dockerf ile文件從所述代碼倉庫中復制所述子系統的所述源代碼以及所述最新dockerf ile 文件。
[0033]代碼目錄模塊202用于存儲復制模塊204獲取的源代碼和最新dockerfile文件以及本地預存的dockerf ile文件。
[0034]所述b00t2d0Cker虛擬機101包括鏡像生成模塊103以及容器構建模塊104。
[0035]鏡像生成模塊103與代碼目錄模塊202連接,讀取子系統的最新dockerfile文件,并根據該最新的dockerf i I e文件構建子系統的鏡像。
[0036]容器構建模塊104用于鏡像創建后,設置docker容器參數來構建docker容器并與代碼目錄模塊202連接來讀取子系統的源代碼,可使所述源代碼可在所述docker容器中運行。具體地,基于Docker技術,docker容器獲取到子系統的源代碼,以使該子系統的源代碼可在其相匹配的docker容器中運行,以此來提供服務給用戶。
[0037]上述搭建裝置從代碼倉庫獲取到了源代碼和dockerfile文件,利用子系統的最新dockerf ile文件構建了與分布式服務的子系統匹配的鏡像和docker容器,便使子系統的該源代碼可在相匹配的docker容器中運行,從而將復雜的分布式開發環境從多個遠程服務器集中到單機部署,節省了資源和開發成本,且通過構建的相互彼此隔離的docker容器,還可避免開發干擾。
[0038]相對與上述實施例,進一步地,鏡像生成模塊103為了構件與子系統相匹配的鏡像,該搭建裝置100的boot2docker虛擬機101還包括基礎鏡像獲取模塊105,基礎鏡像獲取模塊105與基礎鏡像倉庫建立通訊,用于從基礎鏡像倉庫中獲取基礎鏡像。從而,鏡像生成模塊103根據從共享模塊102讀取的子系統的所述最新dockerfile文件,在基礎鏡像上構建具有特定功能的鏡像。
[0039]相對與上述實施例,進一步地,Eclipse插件301的第一接收模塊303所接收用戶于從dockerf ile文件列表中選擇dockerf ile文件的選擇信息是通過復制指令輸送代碼開發IDE 201,第一接收模塊202接收到選擇信息后,第一發送模塊203通過發送復制指令給代碼開發IDE 201,該復制指令中包含該選擇信息。
[0040]相對與上述實施例,進一步地,boo t2docker虛擬機1I還包括共享模塊102,共享模塊102用于boot2docker虛擬機101與代碼開發IDE 201建立通信連接,用于共享代碼目錄模塊202中的源代碼以及最新dockerf ile文件,以及共享模塊102還與鏡像生成模塊103建立通訊連接來傳輸最新dockerfile文件,還與容器構建模塊104建立通訊連接來傳輸源代碼。具體地,若所選擇的dockerf ile文件是相匹配的子系統的最新dockerf ile文件,則此時共享模塊獲取的最新dockerf ile文件即為用戶所選擇的dockerfile文件;若所選擇的dockerf ile文件不是相匹配的子系統的最新dockerf ile文件,則此時共享模塊獲取的最新dockerf ile文件即為復制模塊從代碼倉庫中復制過來的。本實施例子中,共享模塊102為共享磁盤,其與代碼目錄模塊202建立磁盤掛載,還通過磁盤映射方式傳輸源代碼到docker容器中。
[0041]綜合而言,本發明實施例中的基于Docker的分布式開發環境的搭建方法和搭建裝置,利用Docker技術,實現了分布式服務子系統的單機部署,且利用相互隔離的docker容器可避免了開發時各個服務間的相互干擾,減少了對服務器環境依賴,降低了開發成本。此外,還利用Ecl ipse插件技術實現了可視化的文件選擇。
[0042]所屬領域的技術人員可以清楚地了解到,為了描述簡潔,上述描述的裝置、模塊、單元具體工作過程可以參看前述方法實施例中的對應過程,在此不再贅述。
[0043]在本申請所提供的幾個實施例中,所揭示的方法和裝置可以通過其他方式實現,例如以上描述的裝置實施例僅為示意性的,所述模塊單元的劃分僅僅為一種邏輯功能劃分,實現時可以有另外的劃分方式,例如多個單元或者組件可以結合或者一些特征可以忽略或者不執行。
[0044]對所公開實例的上述說明,使得本技術領域專業人員能夠實現或者使用本發明。對這些實施例的多種修改對本領域的專業技術人員來說是顯而易見的,本文中所定義的一般原理可以在不脫離本發明的精神或范圍的情況下,在其他實施例中實現。因此,本發明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點一致的最寬范圍。
【主權項】
1.一種基于Docker的分布式開發環境的搭建方法,其特征在于,包括步驟: 接收用戶從本地預存dockerfile文件列表中選擇dockerf ile文件的選擇信息,其中,一個所述dockerf ile文件對應匹配一個分布式服務的子系統; 將選擇的dockerf ile文件與代碼倉庫中的dockerf ile文件進行比較,并判斷所述選擇的dockerf ile文件是否是與其相匹配的子系統的最新dockerf ile文件; 若所述選擇的dockerf ile文件是所述子系統的所述最新dockerf ile文件,則根據所述選擇的dockerfile文件從所述代碼倉庫中復制與其相匹配的子系統的源代碼; 根據所述最新dockerf i Ie文件構建所述子系統的鏡像; 基于所述鏡像設置docker容器參數來構建docker容器并在所述docker容器中來運行所述源代碼,用于完成分布式環境的部署。2.如權利要求1所述的基于Docker的分布式開發環境的搭建方法,其特征在于,所述將選擇的dockerf ile文件與代碼倉庫中的dockerf ile文件進行比較,并判斷所述選擇的dockerf ile文件是否是與其相匹配的子系統的最新dockerf ile文件的步驟之后還包括: 若所述選擇的dockerfile文件不是其相匹配的子系統的所述最新dockerf ile文件,則根據所述選擇的dockerf ile文件從所述代碼倉庫中復制所述子系統的所述源代碼以及所述最新dockerf ile文件。3.如權利要求2所述的基于Docker的分布式開發環境的搭建方法,其特征在于,根據所述最新dockerf i Ie文件構建所述子系統的鏡像步驟之前還包括: 從基礎鏡像倉庫中獲取基礎鏡像。4.如權利要求3所述的基于Docker的分布式開發環境的搭建方法,其特征在于,所述接收用戶從本地預存dockerf ile文件列表中選擇dockerf ile文件的選擇信息的步驟之后還包括: 生成復制指令,所述復制指令包括用戶選擇dockerf i Ie文件的的所述選擇信息。5.—種基于Docker的分布式開發環境的搭建裝置,包括彼此之間建立通訊連接的Ecl ipse插件、代碼開發IDE以及boot2docker虛擬機,所述代碼開發IDE還與代碼倉庫建立通訊連接,所述代碼倉庫用于存儲所有分布式服務的子系統的源代碼以及dockerfile文件,其特征在于,所述Ecl ipse插件包括第一接收模塊以及第一發送模塊;所述代碼開發IDE包括第二接收模塊、判斷模塊、復制模塊以及代碼目錄模塊;所述boot2docker虛擬機包括鏡像生成模塊以及容器構建模塊, 所述第一接收模塊用于所述Ecl ipse插件接收用戶于從本地預存的dockerf ile文件列表中選擇dockerf ile文件的選擇信息,一個所述dockerf ile文件對應匹配一個所述子系統; 所述第一發送模塊用于發送所述選擇信息給所述代碼開發IDE的所述第二接收模塊;所述判斷模塊用于所述代碼開發IDE將選擇的dockerfile文件與所述代碼倉庫中的dockerf ile文件進行比較,并判斷所述選擇的dockerf ile文件是否是與其相匹配的子系統的最新dockerf i I e文件; 所述復制模塊用于當所述選擇的d ο c k e r f i I e文件是所述子系統的所述最新dockerf ile文件時,所述代碼開發IDE根據所述選擇的dockerf ile文件從所述代碼倉庫中復制相匹配的子系統的源代碼; 所述代碼目錄模塊用于存儲所述復制模塊獲取的所述源代碼以及本地預存的dockerf ile 文件; 所述鏡像生成模塊與所述代碼目錄模塊連接,用于讀取所述最新 dockerf i Ie文件,并根據所述最新dockerf i Ie文件構建子系統的鏡像; 所述容器構建模塊用于所述鏡像生成后,基于所述鏡像設置docker容器參數來構建docker容器并與所述代碼目錄模塊連接來讀取所述源代碼,可使所述源代碼可在所述docker容器中運行。6.如權利要求5所述的搭建裝置,其特征在于,所述復制模塊還用于當所述判斷模塊判斷出所述選擇的dockerf ile文件不是所述子系統的所述最新dockerf ile文件時,根據所述選擇的dockerf ile文件從所述代碼倉庫中復制所述子系統的所述源代碼以及所述最新dockerf ile 文件。7.如權利要求6所述的搭建裝置,其特征在于,所述boot2docker虛擬機還與基礎鏡像倉庫建立通訊連接,所述boot2docker虛擬機還包括基礎鏡像獲取模塊, 所述基礎鏡像獲取模塊用于從所述基礎鏡像倉庫獲取基礎鏡像。8.如權利要求7所述的搭建裝置,其特征在于,所述第一發送模塊用于發送生成的復制指令給所述第二接收模塊,所述復制指令包含用戶選擇的dockerf ile文件的所述選擇信息;所述第二接收模塊接收所述復制指令以使所述判斷模塊執行判斷操作。9.如權利要求8所述的搭建裝置,其特征在于,所述Eclipse插件還包括顯示模塊,所述顯示模塊用于讀取所述代碼目錄模塊的本地預存的dockerfile文件以圖形列表形式顯示本地預存的dockerf ile文件列表。10.如權利要求9所述的搭建裝置,其特征在于,所述boot2docker虛擬機還包括共享模塊,所述共享模塊用于所述boot2docker虛擬機與所述代碼開發IDE建立通訊連接以共享所述代碼目錄模塊中的所述源代碼以及所述最新dockerfile文件,以及所述共享模塊還分別與所述鏡像生成模塊以及所述容器構建模塊建立通訊連接,用于將所述最新dockerfile文件輸送給述鏡像生成模塊以及將所述源代碼輸送給所述容器構建模塊。
【文檔編號】G06F9/44GK105824614SQ201510937134
【公開日】2016年8月3日
【申請日】2015年12月15日
【發明人】王沛文, 鐘堅, 廖小文, 曹建平
【申請人】廣東億迅科技有限公司