DELPHI開始支持LINUX DOCKER
本方翻譯自Marco Cantu的文章。
在過去的幾年中,將服務器端解決方案(實際上是任何類型的應用程序)部署到輕量級容器而不是物理機器或虛擬機已經變得越來越普遍,因為這允許更大的靈活性(在測試方面),更好地重建相同的執行環境,以及更大的可擴展性。
隨着10.3.3版本的發布,Embarcadero正式開始支持將通用Linux應用程序部署到Docker容器,特別是支持部署到RAD服務器。
在這篇博客文章中,我將介紹Docker和Docker Hub,以及如何輕松地開始將Linux應用程序部署到Docker。在第二篇博客文章中,我將特別關注RAD服務器的部署。我們也將很快有一份關於這個主題的更詳細的白皮書。
什么是Docker
Docker是一個操作系統級的虛擬化環境,允許在容器文件中打包和交付軟件包。容器文件由Docker引擎執行,多個容器可以在同一個Linux安裝上並排運行。每個容器中都有一個操作系統級的虛擬化環境。 容器比虛擬機更輕,因為它們由Docker引擎運行。容器是通過將一組稱為Dockerfile的指令構建到容器映像中來創建的。容器圖像隨后在Docker引擎上執行。生成步驟和運行步驟都可以采用許多參數來配置特定的生成或運行容器映像。 此外,現有的容器映像可以用作內部的起點,它允許您在現有容器映像的功能的基礎上添加新功能。容器和docker的信息來源很多,一個好的起點是https://www.docker.com/。
什么是Docker Hub?
Docker提供一項服務,允許開發者和發布者向公眾或他們的團隊分發Docker圖片。這項服務被稱為Docker Hub,它為用戶提供了一種使用特定Docker圖像所在存儲庫的方法。Docker存儲庫還允許Docker圖像版本控制。Docker Hub包含官方圖片,比如Ubuntu圖片,可以作為很多用戶的起點。
RAD Studio Docker容器
RAD Studio Docker容器paserver、pa radserver和pa radserver ib可以直接從DockerHub獲得,也可以作為Dockerfiles(在GitHub上)和其他助手實用程序。當使用Docker從DockerHub中提取容器時,必須在容器名稱前面加上組織名稱,例如radstudio/pa Server、radstudio/pa radserver和radstudio/pa-radserver-ib。對於這篇博客文章,我將開始關注第一篇文章radstudio/paserver,它不包括RAD Server。 Docker容器有許多不同的參數,可以在啟動實例時傳遞給Docker引擎。另外,在構建和運行Docker鏡像時,可以定義自定義的構建和運行參數。我們提供的腳本中包含了許多自定義參數,例如PAServer的密碼。 Docker容器實例可以在前台運行,您可以在前台與實例中運行的應用程序交互,也可以在后台分離運行,后者的行為類似於服務。 Docker容器實例默認情況下不會在運行之間存儲對實例的任何更改(它們是臨時映像)。但是,您可以在Docker實例中設置一個持久卷,它將存儲Docker容器實例運行之間的更改。Docker實例中的目錄可以裝載到卷上,並且在Docker實例運行期間,該目錄中所做的任何更改都會在卷上持久。
如何在Linux上安裝Docker
Docker系統可以通過多種方式安裝。安裝Docker的一種方法是使用Ubuntu操作系統中包含的APT包管理器。要使用APT安裝Docker,只需使用sudo或超級用戶帳戶以提升的權限運行APT install命令。
----------
#如果使用sudo sudo apt安裝docker.io
#如果使用超級用戶帳戶 apt安裝docker.io
----------
PAServer Docker映像
PAServer Docker映像使用Ubuntu:Bionic作為基礎映像,並在此基礎上構建包括PAServer工具及其功能的映像PAServer工具是從Embarcadero服務器下載的。此圖像包含PAServer及其所有依賴項,以及用於使用BroadwayD的GTK+框架(FMXLinux庫的一個特性部分,用於在Linux上構建ui,該庫隨Delphi免費提供)。BroadwayD可以通過HTML5和websockets在web上顯示GTK+應用程序。將這兩個工具放在同一個Docker容器上,允許開發人員使用PAServer部署控制台和基於圖形用戶界面的應用程序,並通過BroadwayD服務器通過web瀏覽器查看圖形用戶界面應用程序。 此圖像有幾個參數,包括 PAServer密碼,可以設置為build參數或run參數 是否要在前台交互模式(-it)或分離模式(-d)下運行 外部PAServer端口(即映射到容器中PAServer端口的主機端口)和broadwayd端口重新映射 PAServer的默認密碼設置為'embtdocker' 這是一個如何下載圖像並使用幾個參數啟動圖像的示例:
----------
docker pull radstudio/paserver公司
docker run-it-e PA_SERVER_PASSWORD=securepass-p 64211:64211-p 8082:8082 radstudio/paserver
----------
此時,您可以通過docker映像的主機IP和RAD Studio IDE中的端口地址來引用docker映像,並通過docker映像托管的PAServer部署和運行Linux應用程序。因此,Delphi應用程序將在docker下運行。
GitHub上的Dockerfile
不用從docker hub中提取圖像,您可以使用我們已經構建並在GitHub上提供的腳本創建一個自定義圖像。PAServer Dockerfile包含Docker在構建時用於創建Docker映像的指令。Dockerfile依賴於從Embarcadero下載的特定版本的PAServer,可從以下網址獲得: https://github.com/Embarcadero/paserver-docker 更多即將到來 在下一篇博文中,我們將繼續關注通過docker部署RAD服務器,這是Embarcadero支持docker容器的關鍵原因。
----------------------------------------------
學位越高,對最卑微的人的尊重就越大!