Dockerizar aplicación web

Tengo curiosidad… ¿Alguien ha conseguido dockerizar con éxito una aplicación web hecha con Xojo?

Yo lo estoy intentando a partir de una imagen de Ubuntu a la que instalo las librerías de Linux que figuran en los requisitos, pero cuando levanto la aplicación, por el motivo que sea, no consigo acceder a ella en el puerto en que se supone que escucha.

Sin embargo, la misma aplicación, levantada fuera de Docker, funciona en Linux sin problemas.

Este es el contenido del Dockerfile que utilizo para generar la imagen de la aplicación:

FROM ubuntu
RUN apt-get update && apt-get install libunwind8 libglib2.0-0 -y && mkdir /app
WORKDIR /app
COPY TaskManager .
EXPOSE 3000
CMD ["./TaskManager","-p","3000"]

Tras hacer el build pertinente, levanto un contenedor con el siguiente comando:

docker container run -d -p 3000:3000 xojoweb

La aplicación arranca sin problemas, pero las llamadas desde el navegador no la alcanzan. Es como si el puerto 3000 no estuviese disponible, pero yo lo estoy exponiendo.

Bueno, yo lanzo la pregunta por si hay por aquí alguien con experiencia en Docker que haya probado a dockerizar con éxito una aplicación Web y pueda guiarme un poco en la dirección correcta. Ahora mismo no soy capaz de identificar qué es lo que estoy haciendo mal.

Un saludo.
Óscar.

Al final lo he solucionado usando la versión 10.04 de Ubuntu en lugar de la 20.04.

Mi Dockerfile ha quedado así:

FROM ubuntu:18.04
RUN apt-get update && apt-get install -y --no-install-recommends libunwind8 libglib2.0-0 && mkdir /app
WORKDIR /app
COPY TaskManager .
EXPOSE 3000
CMD ["./TaskManager","--port=3000"]

Es un fichero de configuración muy sencillo, ni siquiera estoy generando volumes para conservar datos (la aplicación tutorial no graba a disco), pero como prueba de concepto creo que es válido. Creo que es muy interesante esta forma de desplegar aplicaciones web. Ya empiezo a pensar en preparar un docker-compose que levante un nginx que actúe como balanceador de carga, un MariaDB y la aplicación web, por ejemplo.

1 Like

Enhorabuena por tus avances Óscar… finalmente lo resolviste tú solo. Estaría genial que nos dieses un seminario de cómo utilizar el contenedor Docker para correr las aplicaciones Web desarrolladas con Xojo, sería muy interesante.

Justo la combinación que propones (nginx + MariaDB) sería la adecuada para mi también :wink:

Un saludo,
Sergio

Hola, Sergio.

Pues estas navidades, como tengo unos días de vacaciones, voy a aprovechar para montar un ejemplo sencillo y os lo muestro en el primer hangout que hagamos en el 2021.

Un saludo.
Óscar.

1 Like

Genial Óscar, deseando que nos lo muestres :wink:. Siempre he tenido curiosidad con el uso de docker y lo he usado en algún curso online que he hecho pero nada en serio.

A ver si viendo tu ejemplo me animo.

Muchas gracias.
Sergio