BI系統打包Docker映象及容器化部署的具體實現

葡萄城技術團隊發表於2022-04-07

在過去的幾年中,"雲"作為明星熱詞站在了各種新潮技術之中,你可能使用過,但說不清它的原理;或者是沒用過,但聽過它的大名;也可能連它的名字都沒聽過,但你對這隻藍色鯨魚一定十分眼熟。作為一名技術人員,只要你在這個軟體行業裡摸爬滾打,就一定對他有不同程度的瞭解。

Docker是什麼?

Docker的LOGO十分有特點,一條鯨魚載著很多集裝箱,集裝箱中滿是要交付的貨物。鯨魚就是作業系統,而集裝箱就是Docker,集裝箱中的就是要交付的貨物,也就是應用程式。各種"貨物"之間的尺寸、大小、形狀是各不相同的,都要放到鯨魚身上,那麼就要考慮各種貨物怎麼安放,還得考慮貨物之間能否重疊起來。於是就有了集裝箱的概念,將每件貨物都放到集裝箱中,這樣鯨魚就可以有順序的安放,省時省力。

那麼就可以理解為:打包好的軟體放到容器中,容器再放到作業系統中,就是簡單的"build——ship——run",這樣就可以保證在自己電腦上怎麼執行,在伺服器上也是怎麼執行,大大減少因為環境原因出錯而導致程式執行錯誤,開發需要花費大量的精力去折騰環境。

Docker作為一個軟體集裝箱化平臺,可以讓開發者構建應用程式時,將它與其依賴環境一起打包到一個容器中,將映象打包後上傳到倉庫,就可以釋出應用到任意平臺中。在使用時,只用一條命令就可以將映象拉取到本地,然後一條命令就可以快速的將專案部署起來。這也完美的詮釋了Docker的三大核心:映象,容器,倉庫。

那麼,首先我們要來了解一下 Docker 的優勢:

1.快

執行時的效能可以獲取極大提升(經典的案例是提升97%)。

管理操作(啟動,停止,開始,重啟等等) 都是以秒或毫秒為單位的。

  1. 敏捷

像虛擬機器一樣敏捷,成本更低,部署方式簡單。

  1. 靈活

將應用和系統"容器化",不新增額外的作業系統。

  1. 輕量

你會擁有足夠的"作業系統",僅需新增或減小映象即可。在一臺伺服器上可以佈署100~1000個Containers容器。

5.便宜

開源的,免費的,低成本的。由現代Linux核心支援並驅動。注* 輕量的Container必定可以在一個物理機上開啟更多"容器",註定比VMs要便宜。

  1. 雲支援

雲服務提供建立和管理Linux容器框架。

在之前的文章,我們也系統地介紹過Docker,感興趣的同學可以戳:

第一章:Docker與k8s的恩怨情仇(一)—成為PaaS前浪的Cloud Foundry

第二章:Docker與k8s的恩怨情仇(二)—用最簡單的技術實現"容器"

第三章:Docker與k8s的恩怨情仇(三)—後浪Docker來勢洶洶

第四章:Docker與k8s的恩怨情仇(四)-雲原生時代的閉源落幕

第五章:Docker與k8s的恩怨情仇(五)——Kubernetes的創新

第六章:Docker與k8s的恩怨情仇(六)—— "容器編排"上演"終結者"大片

第七章:Docker與k8s的恩怨情仇(七)—— "服務發現"大法讓你的內外互動原地起飛

第八章:Docker與k8s的恩怨情仇(八)——驀然回首總覽Kubernetes

Docker應用部署BI資料分析

通過上面一系列的介紹,我們可以從發展背景到具體原理和使用瞭解Docker。接下來我們將從BI資料分析應用為例,為大家介紹如何實現Docker應用程式部署。

首先我們從BI資料視覺化分析說起。通過對目前國內市面上多個BI應用進行調研後發現這些應用都存在一些問題。

  1. 依賴於執行環境 JDK,JAR,.NET Core等,若執行環境不一致也會導致各種問題出現。
  2. 安裝複雜。對於非專業人員,部署一套系統需要投入很大精力。
  3. 過於依賴於作業系統。例如會存在x32位不可支援,win7環境配置難度大,winserver2008以前版本不支援等各種系統問題。
  4. PC安裝有各類應用軟體,容易和已安裝軟體衝突,引發不可預知的異常問題。
  5. PC安裝各種防毒軟體,如360、金山毒霸、電腦管家等一些防毒軟體,會將程式殺掉,引起一些BI服務無法正常執行。
  6. BI產品普遍有很多執行計劃任務,個人PC安裝BI應用後,即使不開啟軟體,程式依然在跑,容易引起PC執行比較卡頓。

上述問題的存在,就讓 Docker 可以很好凸顯他的價值。

首先Docker中的容器是與其他容器相互隔離的,在所獲取的映象中包含了Docker執行所需要的全部依賴的執行環境;所以只需要簡單兩行程式碼,就可以安裝一個完整的BI應用。我們以Wyn Enterprise的部署為例,給大家演示下Docker進行軟體部署的具體過程。

示例步驟:

  1. 安裝Docker
  2. 獲取映象:

sudo docker pull grapecitycn/wyn-enterprise

  1. 建立並執行docker容器:

sudo docker run --name wyn -p 51980:51980 -d grapecitycn/wyn-enterprise

  1. 至此,我們就可以通過 http://{server_ip_address}:51980 來訪問Wyn

通過以上示例,我們可以看到,僅需簡單的3個命令列,就快速完成了BI系統的部署。請問,還有什麼比Docker更簡單快捷的部署方式嗎?

Docker映象打包

部署如此簡單,那麼如果要進行移植該如何做,整合的專案如何釋出Docker倉庫中呢?

接下來,我們通過一個案例系統的解映象打包過程,為大家解答這兩個問題。

事情的起因是客戶找到葡萄,表示希望將BI軟體打包到自己應用系統中,在實現OEM白標處理後,做一些個性化配置後,重新打包映象,上傳到Docker倉庫中。

說做就做,我們們現在就開始專案。

  1. 首先,使用 Wyn Enterprise 提供的 Docker 映象來建立一個自己的 Docker 容器

sudo docker pull grapecitycn/wyn-enterprise

sudo docker run --name wyn -p 51980:51980 -d grapecitycn/wyn-enterprise

通過:http://{server_ip_address}:51980進行個性化操作配置。

  1. 按自己的要求進行系統配置

可以根據自己的需要來對系統進行配置,比如替換登入頁面的背景圖片和LOGO,系統左上角顯示的LOGO,以及替換瀏覽器tag頁上面顯示的LOGO;還可以根據自己的需要建立一些示例文件。

  1. 用 admin 登入到系統後,匯出你需要的文件以及配置。
  2. 製作 Docker 映象
    4.1. 準備一臺Linux機器,把資料夾custom-wyn拷貝到這臺機器上面去;
    4.2. 把步驟3中匯出的壓縮檔案重新命名為sample_files.zip,並拷貝到目錄custom-wyn/sample_files;
    4.3. 如果需要在自定義的Docker映象中內建字型,請把準備好的字型檔案拷貝到目錄custom-wyn/custom_fonts下;
    4.4. 根據自己的需要,修改dockerfile檔案中docker映象wyn-enterprise的tag名稱;
    4.5. 參照指令碼檔案push-docker-image.sh中的內容,製作並且上傳Docker映象到Docker倉庫中。
    4.6. 打包資源

從該地址下載即可:

https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=139206

4.7. 拉取Docker映象進行驗證

拉取上面步驟中建立好的Docker映象,並使用該映象建立一個docker容器。

訪問該docker容器中執行的Wyn Enterprise應用並進行驗證。

至此我們的Docker映象都已經制作完成。

總結

這裡我們系統為大家介紹了Docker應用的優勢,以及整個BI專案在docker中部署的全過程。其中Docker映象打包也是目前很多企業中比較喜歡的一個功能,通過簡單的操作BI整合到自己的應用系統中一起打包,完美的解決了嵌入融合的問題。

目前越來越多開發者已經投入到Docker的隊伍中,同時隨著技術更新迭代,BI也在不斷進步,現在WynEnterprise已經支援K8S叢集部署。接下來,將持續為大家分享資料整合,資料分析,叢集部署等內容。

相關文章