在过去的几年中,将服务器端解决方案(实际上是任何类型的应用程序)部署到轻量级容器而非物理机或虚拟机上已变得越来越普遍,因为这可以提供更大的灵活性(在测试方面) ,这是重建相同执行环境的更好方法,并且具有更高的可伸缩性。随着10.3.3版本的发布,Embarcadero已开始正式支持将通用Linux应用程序部署到Docker容器,特别是支持部署到RAD Server。
在这篇博客文章中,我将介绍Docker和Docker Hub,以及如何轻松地开始将Linux应用程序部署到Docker。在第二篇博客文章中,我将专门介绍RAD Server的部署。我们还将很快提供有关此主题的更详细的白皮书。
什么是Docker
Docker是操作系统级别的虚拟化环境,允许将软件作为捆绑包打包和交付到容器文件中。容器文件由Docker Engine执行,并且多个容器可以在同一Linux安装上并行运行。在每个容器内部是一个OS级虚拟化环境。
容器比虚拟机轻巧,因为它们由Docker Engine运行。容器是通过将一组称为Dockerfile的指令构建到容器映像中来创建的。然后在Docker Engine上执行容器映像。构建步骤和运行步骤都可以使用许多参数来配置特定的构建或运行容器映像。
此外,现有容器映像可以用作Dockerfile中的起点,这使您可以在现有容器映像的功能之上添加新功能。有关容器和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 / paserver,radstudio / pa-radserver和radstudio / pa-radserver-ib。在这篇博客中,我将开始关注第一个,radstudio / paserver,它不包括RAD Server。
Docker容器具有许多不同的参数,您可以在启动实例时将其传递给Docker Engine。此外,在构建和运行Docker映像时,可以定义自定义构建和运行参数。我们提供的脚本中已包含许多自定义参数,例如PAServer的密码。
Docker容器实例可以在前台运行,您可以在其中与实例中运行的应用程序进行交互,也可以在后台像服务一样在后台运行。
Docker容器实例默认情况下不会在运行之间存储对该实例的任何更改(它们是瞬态映像)。但是,您可以在Docker实例内设置一个持久卷,该卷将存储Docker容器实例运行之间的更改。可以将Docker实例中的目录挂载到该卷上,并且对该目录内所做的任何更改都将在Docker实例运行之间保留在该卷上。
如何在Linux上安装Docker
Docker系统可以通过多种方式安装。安装Docker的一种方法是使用Ubuntu操作系统中包含的APT软件包管理器。要使用APT安装Docker,只需使用sudo或使用超级用户帐户,以提升的特权运行apt install命令。
#if using sudo
sudo apt install docker.io
#if using super user account
apt install docker.io
PAServer Docker映像
PAServer Docker映像使用Ubuntu:Bionic作为基础映像,并在此映像的基础上构建以包含PAServer工具及其功能。PAServer工具是从Embarcadero服务器下载的。该映像包含PAServer及其所有依赖项,以及用于使用BroadwayD的GTK +框架(用于在Linux上构建UI的FMXLinux库的功能部分,该库随Delphi免费提供)。BroadwayD可用于通过HTML5和websocket在Web上显示GTK +应用程序。通过在同一个Docker容器上使用这两个工具,开发人员可以使用PAServer部署基于控制台和GUI的应用程序,并通过BroadwayD服务器通过Web浏览器查看GUI应用程序。
此图片有一些参数,包括
PAServer密码,可以设置为构建参数或运行参数
是否要在前台交互模式(-it)或分离模式(-d)中运行
外部PAServer端口(即映射到容器中PAServer端口的主机端口)和百老汇端口重新映射
PAServer的默认密码设置为“ embtdocker”
这是一个如何下载图像并使用一些参数启动它的示例:
docker pull radstudio/paserver
docker run -it -e PA_SERVER_PASSWORD=securepass -p 64211:64211 -p 8082:8082 radstudio/paserver
这是安装了Docker映像后的Linux控制台(通过PuTTY):

此时,您可以通过其主机IP和RAD Studio IDE中的端口地址来引用docker映像,并通过由docker映像托管的PAServer部署和运行Linux应用程序。因此,Delphi应用程序将在docker下运行。

GitHub上的Dockerfile
您可以使用我们已经构建并在GitHub上可用的脚本来创建自定义图像,而不是从Docker Hub提取图像。PAServer Dockerfile包含Docker在构建时使用的指令,以创建Docker映像。Dockerfile依赖于从Embarcadero下载的特定版本的PAServer,可从以下位置获得:
https://github.com/Embarcadero/paserver-docker
更多未来
在下一篇博客文章中,我们将继续关注通过docker部署RAD Server,这是Embarcadero支持docker容器的关键原因。
Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号
执行时间: 0.04355001449585 seconds