Desde Rad Studio 10.2 Tokyo es posible compilar y ejecutar aplicaciones Linux de servidor (sin interfaz de usuario).Vamos a preparar una imagen docker con Ubuntu y todo lo necesario para ejecutar aplicaciones Delphi en Linux, via PAServer. Con Docker podemos desplegar estas aplicaciones en contenedores Linux a nuestro sistema en producción.
Las posibilidades son inmensas, desde montar un universo de microservicios interconectados para alta disponibilidad y tolerancia a fallos a aplicaciones monolíticas. Una de las ventajas de utilizar Docker es que podemos preparar una imagen base (mucho más ligera que mediante máquinas virtuales) e ir desplegándola a medida que lo necesitemos.
Actualización: Si estás usando RadStudio 10.3.3 (Rio) lee: Cómo ejecutar aplicaciones Delphi en Docker Linux con RadStudio 10.3.3
Manos a la obra
El camino rápido
Abre una consola donde tengas Docker. En mi caso utilizo Docker Toolbox para Windows y arranco Docker Quickstart Terminal.
docker pull jaruzafa/ubuntupaserver docker run -p 64211:64211 -t -i jaruzafa/ubuntupaserver
BOOM! Ya has lo tienes, ahora pasa a leer la parte de RadStudio más abajo.
El camino lento
Nuestra imagen se basará en ubuntu 16.04. Crea un fichero de texto llamado Dockerfile, con este contenido:
#Imagen base sobre la que construiremos la imagen con PAServer FROM ubuntu # Todo lo necesario para RadStudio más algunas utilidades pueden venirte bien 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 # Copia PAServer al contenedor y lo descomprime 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 del contenedor WORKDIR /root/PAServer-19.0 # Arranca PAServer CMD ["/root/PAServer-19.0/paserver","-password=1234"] # Publica el puerto por defecto de PAServer EXPOSE 64211
Recuerda copiar C:\Program Files\Embarcadero\RADStudio\19.0\PAServer\LinuxPAServer19.0.tar.gz a la carpeta donde tienes el fichero Dockerfile.
Arranca Docker Quickstart Terminal (si utilizas Docker Toolbox) y ejecuta:
docker build -t mirepo/mimagen .
Con esto ya tienes creada la imagen, para arrancar el contenedor:
docker run -p 64211:64211 -t -i mirepo/miimagen
Y ahora desde RADStudio
Que sería de un tutorial sin un Hola Mundo….
En Rad Studio haz click en Nuevo proyecto->Console Application
Completa el código:
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.
En el Project Manager, haz click derecho para añadir la plataforma Linux:
Selecciona Linux-64bit:
Te pedirá el nombre del profile.
En mi caso le he puesto «paserverxubuntu», pero puedes ponerle el nombre que quieras.
Ahora viene la parte importante, te pedirá la IP donde está escuchando el PAServer. Debes poner la IP del host de Docker, no la del contenedor!
En mi caso, que utilizo Docker Toolbox for Windows, la IP es 192.168.99.100.
El puerto por defecto es 64211 y la contraseña es «1234»:
Ahora dale a «Run» (la primera vez que lo ejecutes se traerá el SDK, esto puede tardar unos minutos)
En el contenedor Docker podrás ver:
Y ya está!
Nota: La imagen Docker de este ejemplo es adecuada para desplegar aplicaciones, pero NO podrás hacer debug (breakpoints y esas cosas, ya sabes…), ya que no contiene todo lo necesario para que el debugger de RadStudio funcione.
Deja un comentario