首页 > 系统相关 >使用 Docker 在 Linux 上运行 Delphi 应用程序

使用 Docker 在 Linux 上运行 Delphi 应用程序

时间:2023-10-14 11:12:22浏览次数:57  
标签:get PAServer Delphi 应用程序 && Linux Docker

 

从 Rad Studio 10.2 Tokyo 开始,可以编译和运行 Linux 服务器应用程序(无用户界面)。我们将使用 Ubuntu 准备一个 docker 映像,以及通过 PAServer 在 Linux 上运行 Delphi 应用程序所需的一切。使用 Docker,我们可以将这些应用程序在 Linux 容器中部署到我们的生产系统中。

从建立一系列互连的微服务以实现高可用性和容错到单体应用程序,可能性是巨大的。使用 Docker 的优点之一是我们可以准备一个基础镜像(比使用虚拟机轻得多)并根据需要进行部署。

更新!:如果您使用的是 10.3.3 (Rio),请阅读 如何使用 RadStudio 10.3.3 在 Docker Linux 上运行 Delphi 应用程序

 我们开始做吧............................

快速途径

打开安装了 Docker 的控制台。在我的例子中,我使用 Docker Toolbox for Windows 并启动 Docker Quickstart Terminal。

docker pull jaruzafa/ubuntupaserverdocker run -p 64211:64211 -t -i jaruzafa/ubuntupaserver

恭喜!你已经完成了,现在去阅读下面的 RadStudio 部分。

缓慢的途径

我们的镜像将基于 Ubuntu 16.04。创建一个名为 Dockerfile的文本文件,其中包含以下内容:

 

#Imagen base
FROM ubuntu

# Everything you need for RadStudio plus some utilities that may come in handy
RUN \
apt-get -y update && \
apt-get -y upgrade && \
apt-get -y dist-upgrade && \
apt-get -y install joe wget p7zip-full curl unzip build-essential zlib1g-dev libcurl4-gnutls-dev && \
apt-get -y install mysecureshell && \
apt-get -y autoremove && \
apt-get -y autoclean

# Copy PAServer to container and unzip it
COPY LinuxPAServer19.0.tar.gz /root/LinuxPAServer19.0.tar.gz
RUN \
cd /root && \
tar xzvf LinuxPAServer19.0.tar.gz && \
cd PAServer-19.0 && \
mkdir scratch-dir

# Working directory
WORKDIR /root/PAServer-19.0

# Start PAServer
CMD ["/root/PAServer-19.0/paserver","-password=1234"]

# Publish PAServer default port
EXPOSE 64211

   

请记住将  C:\Program Files\Embarcadero\RADStudio\19.0\PAServer\LinuxPAServer19.0.tar.gz 复制到您拥有 Dockerfile 的同一文件夹中。

运行 Docker 快速入门终端并输入:

docker build -t mirepo/mimagen 。

现在您已经创建了图像。只需启动容器:

docker run -p 64211:64211 -t -i mirepo/miimagen

现在 RADStudio 方面

Hello world….

在 Rad Studio 中单击新建项目->控制台应用程序

2017-04-29-13_29_12-IE11-Win7-Configurada-antes-de-arrancar-Corriendo-Oracle-VM-VirtualBox.png

完成代码:

program Project1;
{$APPTYPE CONSOLE}
{$R *.res}

uses
System.SysUtils;

begin
try
  Writeln('Hello world Docker/Linux ');
except
on E: Exception do
  Writeln(E.ClassName, ': ', E.Message);
end;
end.

  

在项目管理器中,右键添加Linux平台:

2017-04-29-13_31_02-IE11-Win7-Configurada-antes-de-arrancar-Corriendo-Oracle-VM-VirtualBox.png

选择 Linux-64 位:

2017-04-29-13_31_18-IE11-Win7-Configurada-antes-de-arrancar-Corriendo-Oracle-VM-VirtualBox.png

它将询问配置文件名称:

2017-04-29-13_32_02-IE11-Win7-Configurada-antes-de-arrancar-Corriendo-Oracle-VM-VirtualBox.png

我写了“paserverxubuntu”,但你可以写你想要的名字。

2017-04-29-13_32_02-IE11-Win7-Configurada-antes-de-arrancar-Corriendo-Oracle-VM-VirtualBox.png

现在到了棘手的部分,您将被要求提供 PAServer 正在侦听的 IP。您必须输入Docker 主机的 IP,而不是容器的 IP!

就我而言,我使用 Docker Toolbox for Windows,IP 为 192.168.99.100。

2017-04-29-13_32_02-IE11-Win7-Configurada-antes-de-arrancar-Corriendo-Oracle-VM-VirtualBox.png

默认端口为 64211,密码为“1234”:

2017-04-29-13_32_02-IE11-Win7-Configurada-antes-de-arrancar-Corriendo-Oracle-VM-VirtualBox.png

点击“运行”(第一次会复制SDK,这可能需要几分钟)

2017-04-29-13_32_02-IE11-Win7-Configurada-antes-de-arrancar-Corriendo-Oracle-VM-VirtualBox.png

在 Docker 容器中,您将看到:

2017-04-29-13_32_02-IE11-Win7-Configurada-antes-de-arrancar-Corriendo-Oracle-VM-VirtualBox.png

就是这样!

注意:此示例中的 Docker 映像适用于部署应用程序,但您将无法调试(断点和其他东西,您知道……),因为它不包含 RadStudio 调试器工作所需的一切。

2017-04-29-13_32_02-IE11-Win7-Configurada-antes-de-arrancar-Corriendo-Oracle-VM-VirtualBox.png

标签:get,PAServer,Delphi,应用程序,&&,Linux,Docker
From: https://www.cnblogs.com/saintyear/p/17763832.html

相关文章

  • LINUX:sqoop连接:ERROR manager.CatalogQueryManager: Failed to list databases com.my
    可见是连接的jar包出现了错误  通过命令发现我的是5.7版本,将驱动jar包替换为5.几的  之后通过命令成功解决......
  • 让你的Linux飞起来的5个妙招
    当系统使用的时间越来越长,系统中的安装、卸载的程序变得越来越多,让整个系统看起来很臃肿。尤其对于那些只有128GB的SSD固态硬盘的笔记本而言,释放磁盘空间变得十分必要。为了更好地为小白提供帮助,本期Linux实验室提供的五种方法都具有很高的安全性,大家可以放心使用。同时,本文使......
  • Linux怎么修改权限
    rwx:r代表可读,w代表可写,x代表该文件是一个可执行文件,如果rwx任意位置变为-则代表不可读或不可写或不可执行文件。示例:给aaa.txt文件权限改为可执行文件权限,aaa.txt文件的权限时-rw----第一位:-就代表是文件,d代表是文件夹第一段(3位):代表拥有者的权限第二段(3位):代表拥有者所在的组,组员的......
  • label-studio docker-compose 运行试用
    label-studio是一个支持多格式的数据标注工具,以下是基于docker-compose运行的试用环境准备docker-composeversion:"3.9"services:nginx:image:heartexlabs/label-studio:latestports:-"8080:8085"-"8081:8086"......
  • Docker配置Oracle
    1.下载镜像dockerpullregistry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g2.创建并启动容器默认启动方式dockerrun-itd-p1521:1521--nameoracle--restart=alwaysregistry.aliyuncs.com/helowin/oracle_11g持久化启动方式dockerrun-itd-p1521:1521-......
  • Linux桌面环境(桌面系统)
    早期的Linux系统都是不带界面的,只能通过命令来管理,比如运行程序、编辑文档、删除文件等。所以,要想熟练使用Linux,就必须记忆很多命令。后来随着Windows的普及,计算机界面变得越来越漂亮,点点鼠标就能完成很多工作,人们已经习惯了图形界面化的操作,很难再忍受一片漆黑的命令行窗口了......
  • Linux实现虚拟机间跨网段通信
    Linux虚拟机跨网段通信目录:目录实验场景3实验环境3添加虚拟网络3配置VM1地址4配置R1地址5有网卡配置文件5如果没有网卡配置文件5配置R2地址7有配置文件7配置VM2地址8配置路由8开启R1路由转发功能8配置静态路由9开启R2路由转发9说明:9配置静态路由9验证10VM1pingV......
  • Linux终端常见命令
    Linux终端常见命令ls查看当前目录cdnoip跳转到noip文件夹g++a.cpp-std=c++14-O2-oa编译a.cpp,生成了一个名为a的文件(生成的文件没有扩展名,O2大写,-o小写)./a运行amorea.out查看a.out(a.in同理)clear清空终端......
  • linux spi
    linuxspispi_sync()执行流程?spi_async()执行流程?spiperipheraldriver中,调用spi_sync()为什么会看到spi*内核线程会有负载?intspi_sync(structspi_device*spi,structspi_message*message){ intret; mutex_lock(&spi->controller->bus_lock_mutex); ret=_......
  • linux内核:futex锁
    1、背景多线程间需进行通信,锁是通信的主要机制。但是每次使用都会引发系统调用,当锁具有低争用率时,系统调用可能会构成显著的开销。经研究发现,很多同步是无竞争的,即某个进程进入互斥区,到再从某个互斥区出来这段时间,常常是没有进程也要进这个互斥区或者请求同一同步变量的。但是在......