这篇博文介绍了在 Docker 容器中部署 Delphi Linux 应用程序的支持,这是使用 Docker 部署 RAD 服务器的起点。
在过去的几年里,将服务器端解决方案(实际上是任何类型的应用程序)部署到轻量级容器而不是物理机或虚拟机变得越来越普遍,因为这允许更大的灵活性(也在测试方面) ,一种更好的方式来重建相同的执行环境,并且具有更高的可扩展性。随着 10.3.3 版本的发布,Embarcadero 开始正式支持将通用 Linux 应用程序部署到 Docker 容器,特别是支持部署到 RAD Server。
在这篇博文中,我将介绍 Docker 和 Docker Hub,以及如何轻松开始将 Linux 应用程序部署到 Docker。在第二篇博文中,我将特别关注 RAD 服务器部署。我们还将很快提供有关此主题的更详细的白皮书。
什么是 Docker
Docker 是一个操作系统级别的虚拟化环境,它允许将软件打包和交付为容器文件中的包。容器文件由 Docker 引擎执行,多个容器可以在同一个 Linux 安装上并行运行。每个容器内部都有一个操作系统级别的虚拟化环境。
容器比虚拟机更轻量级,因为它们是由 Docker 引擎运行的。容器是通过将一组称为 Dockerfile 的指令构建到容器映像中来创建的。然后在 Docker 引擎上执行容器镜像。构建步骤和运行步骤都可以采用许多参数来配置特定的构建或运行容器映像。
此外,现有的容器镜像可以用作 Dockerfiles 中的起点,这允许您在现有容器镜像的功能之上添加新功能。关于容器和 docker 的信息来源很多,一个很好的起点是https://www.docker.com/。
什么是 Docker 集线器?
Docker 提供了一项服务,允许开发人员和发布者将 Docker 映像分发给公众或其团队。该服务被称为 Docker Hub,它为用户提供了一种使用特定 Docker 映像所在的存储库的方式。Docker 存储库还允许 Docker Image 版本控制。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 服务器。
Docker 容器有许多不同的参数,您可以在启动实例时将这些参数传递给 Docker 引擎。此外,可以在构建和运行 Docker 映像时定义自定义构建和运行参数。我们提供的脚本中包含了许多自定义参数,例如 PAServer 的密码。
Docker 容器实例可以在前台运行,您可以在其中与在实例中运行的应用程序进行交互,或者它们可以在后台分离运行,其行为类似于服务。
默认情况下,Docker 容器实例不会在运行之间存储对实例的任何更改(它们是临时映像)。但是,您可以在 Docker 实例中设置一个持久卷,它将存储 Docker 容器实例运行之间的更改。Docker 实例中的目录可以挂载到卷上,并且在该目录中所做的任何更改都会在 Docker 实例运行之间保留在卷上。
如何在 Linux 上安装 Docker
可以通过多种方式安装 Docker 系统。安装 Docker 的一种方法是使用 Ubuntu 操作系统中包含的 APT 包管理器。要使用 APT 安装 Docker,只需使用 sudo 或使用超级用户帐户以提升的权限运行 apt install 命令。
#如果使用须藤sudo apt install docker.io#如果使用超级用户帐户安装 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 部署基于控制台和 GUI 的应用程序,并通过 BroadwayD 服务器通过 Web 浏览器查看 GUI 应用程序。
此图像有一些参数,包括
PAServer 密码,可设置为构建参数或运行参数
是否要在前台交互模式 (-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 映像后的 Linux 控制台(通过 PuTTY):
此时,您可以从 RAD Studio IDE 中通过其主机 IP 和端口地址引用 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 服务器,这是 Embarcadero 支持 docker 容器的关键原因。
Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号
执行时间: 0.043962001800537 seconds