0

我正在为我未来的 delphi web 项目制作各种部署场景的原型。当我要构建下一代杀手级应用程序 (...) 时,我研究了 docker 容器的云部署,用于我的后端 API 数据快照服务器。
由于我一般是 docker 新手,而且对 linux 相对不熟悉,所以这并不简单。

但我设法构建了一个与 delphi 11 alexandria 兼容的 PAServer 映像并将简单的应用程序部署到我的本地 docker 桌面环境(不幸的是,今天的 radstudio/paserver docker hub 映像仅是 10.4.x 版本,因此无法单击并运行......)。

但是,当部署默认的 delphi datasnap webbroker 服务器(作为控制台应用程序)时,程序会返回到它的命令行并等待“启动”指令。

到目前为止,我没有成功地在 docker CLI 中以交互方式访问该程序命令行以输入该“启动”指令(或访问 PAServer 命令行以例如触发针对同一问题的详细会话)。是的,我可以默认启动服务器并“修复”问题,但迟早我需要它可用?

我尝试了一个(一般)建议( get-apt install reptyr / reptyr PID )来访问正在运行的进程,但它返回错误,因为我真的是 linux/Docker 的新手,所以我没有进一步的想法。
(仅供参考部署到 Windows,只需打开一个命令行窗口,该窗口仍然可以输入)

# reptyr 83
[-] Timed out waiting for child stop.
Unable to attach to pid 83: Operation not permitted
#

(并且在 IDE 会话“项目引发异常类已停止(用户)(18)”中引发异常,但会话可以继续)

4

1 回答 1

0

好的,所以如果你以交互模式启动 docker 容器,docker host 命令行将转换为容器命令行,附加到 PID 1 的“主”进程(我猜)。

docker run -it -p 8082:8082 -p 64211:64211 -p 80:80 mypaserverimage

连接到 PAServer 命令行。但仍然是如何连接到后续 PAServer 部署的控制台应用程序的命令行。

(似乎无法从 docker 桌面 GUI 以这种方式运行容器。需要从 docker host 命令行运行)

在此处输入图像描述

于 2022-01-17T15:46:11.900 回答