< Volver a Cursos y Tutoriales de Aplicaciones de Integración
Cómo desplegar una aplicación de Mulesoft en Docker
Hoy gracias a Jaime Pons vamos a aprender cómo desplegar una aplicación de Mulesoft en Docker, ¡dejo paso a este gran profesional!
¡Hola a todos los seguidores de mi buen amigo ingeniero binario! Me presento, soy Jaime Pons, creador del canal de Instagram aprendolinux y la web aprendolinux.com y hoy te traigo la forma más sencilla de probar tus aplicaciones desarrolladas para Mulesoft usando Docker. Pero antes os haré una breve introducción de qué es Docker y cómo podemos utilizarlo en cualquier sistema operativo.
¿Qué es Docker?
Docker es una tecnología de contenedores que son algo así como mini máquinas virtuales que tienen sólo lo más básico para funcionar. Con la tecnología que ofrece Docker puedes meter tus aplicaciones en un contenedor y éste actuará como un cliente-servidor con:
- Un demonio actuando en el servidor “dockerd”
- Una API para lanzar comandos y dar instrucciones al demonio de Docker.
- Una interfaz de línea de comandos (CLI) en la parte del cliente “docker”.
Esta interfaz de línea de comandos del cliente de Docker se conecta al servidor a través de la API, y el demonio del servidor se encarga de la gestión de las imágenes, contenedores, redes o volúmenes de datos.
¿Cómo instalar Docker en Linux, Windows o Mac?
Aquí te explico de forma súper simple cómo instalar Docker en Linux, pero también lo puedes instalar en Windows o en Mac. Tan sólo te advierto que al instalar Docker en Windows haces que aplicaciones como VirtualBox dejen de funcionar, ya que al instalar Docker en Windows se activa la opción de usar Hyper-V, lo que lo hace incompatible con VirtualBox. Si decides dejar de usar Docker y quieres volver a usar VirtualBox en Windows, deberás deseleccionar la opción de Hyper-V en «Activar o desactivar características de Windows». Una vez que reinicies el sistema, deberías poder volver a ejecutar tus máquinas virtuales de VirtualBox.
Dockerfile de Mulesoft y creación de imagen de Docker
Pues bien, una vez que sabemos qué es Docker y cómo instalarlo en nuestro sistema operativo, pasamos al siguiente paso. En Docker hay una comunidad enorme que no para de subir imágenes de contenedores que puedes utilizar libremente y que se alojan en DockerHub. El problema de usar imágenes por defecto es que no sabemos exactamente qué es lo que hay instalado previamente en ellas y, aunque tienen sistemas de detección de errores y bugs, siempre puede haber algún paso que falle. Por eso vamos a ir a lo básico. En Docker puedes crear tu propia imagen utilizando una base limpia, y añadiendo todo lo que quieres instalar y configurar a tu gusto. No os voy a explicar cómo hacer un Dockerfile, ya que eso se llevaría una entrada entera, y no es la intención de este post. Por tanto, como te he comentado anteriormente, podemos hacer la imagen de Mulesoft a partir de una imagen limpia y este sería el resultado:
root@aprendolinux:~/mulesoft# cat Dockerfile
# A partir de esta imagen de java que ocupa sólo 40MB
FROM anapsix/alpine-java:8_jdk_nashorn
# Definimos las variables de entorno
ENV MULE_HOME=/opt/mule \
MULE_VERSION=4.3.0-ea2 \
MULE_MD5=1c77132085645169b32647193e4ec265 \
TZ=Europe/Madrid \
MULE_USER=mule
# Instalamos los certificados necesarios para la descarga
RUN apk --no-cache update && \
apk --no-cache upgrade && \
apk --no-cache add ca-certificates && \
update-ca-certificates && \
apk --no-cache add openssl && \
apk add --update tzdata && \
rm -rf /var/cache/apk/*
# Creamos un usuario a partir de las variables de entorno
RUN adduser -D -g "" ${MULE_USER} ${MULE_USER}
# Creamos un directorio dentro del contenedor con la versión y
# el usuario que hemos almacenado en las variables de entorno
RUN mkdir /opt/mule-standalone-${MULE_VERSION} && \
ln -s /opt/mule-standalone-${MULE_VERSION} ${MULE_HOME} && \
chown ${MULE_USER}:${MULE_USER} -R /opt/mule*
# Ponemos la zona horaria correctamente
RUN echo ${TZ} > /etc/timezone
# Cambiamos al usuario creado
USER ${MULE_USER}
# Descargamos y comprobamos el checksum de Mulesoft
RUN cd ~ && wget https://repository-master.mulesoft.org/nexus/content/repositories/releases/org/mule/distributions/mule-standalone/${MULE_VERSION}/mule-standalone-${MULE_VERSION}.tar.gz && \
echo "${MULE_MD5} mule-standalone-${MULE_VERSION}.tar.gz" | md5sum -c && \
cd /opt && \
tar xvzf ~/mule-standalone-${MULE_VERSION}.tar.gz && \
rm ~/mule-standalone-${MULE_VERSION}.tar.gz
# Definimos los puntos de montaje principales
VOLUME ["${MULE_HOME}/logs", "${MULE_HOME}/conf", "${MULE_HOME}/apps", "${MULE_HOME}/domains"]
# Siempre hay que definir el directorio de trabajo.
WORKDIR ${MULE_HOME}
# El comando que va a ser lanzado por el contenedor, será el servicio que ofrece.
CMD [ "/opt/mule/bin/mule"]
# Default http port
EXPOSE 8081
Perfecto, pues ya tenemos el fichero que nos preparará la imagen de Docker con Mulesoft disponible. Para crearla, hay que lanzar el siguiente comando en el mismo directorio donde tengas el fichero llamado Dockerfile
root@aprendolinux:~/mulesoft# ls
Dockerfile
root@aprendolinux:~/mulesoft# docker build --tag="mule-ee:4.3.0" .
Después de un ratillo en el que tiene que descargar la imagen de java y la aplicación de Mulesoft, si todo ha ido bien podremos ver la imagen creada con el comando:
root@aprendolinux:~/mulesoft# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mule-ee 4.3.0 14adb942e72f 2 days ago 356MB
anapsix/alpine-java 8_jdk_nashorn 21abe91b4321 2 years ago 174MB
¡Ole! Si ya tenemos la imagen listada, podemos pasar a utilizarla en un contenedor de Docker.
Lanzar contenedor Docker de Mulesoft
Para realizar este paso tenemos que crear el contenedor con la imagen anterior y le indicamos algunas características, como el nombre que queremos que tenga, el puerto donde vamos a querer ver nuestras aplicaciones y los volúmenes (puntos de montaje del host en el contenedor) que queremos ver en el propio contenedor. Estos puntos de montaje (directorios) deberemos crearlos en nuestra máquina host o máquina física antes de lanzar el contenedor. Además deberán tener permisos de escritura para que se puedan almacenar datos en los mismos.
root@aprendolinux:~/mulesoft# mkdir -p /opt/mule/apps /opt/mule/logs
root@aprendolinux:~/mulesoft# chmod -R +w /opt/mule
Para una ejecución simple podemos lanzar el comando así:
root@aprendolinux:~/mulesoft# docker run -d --name mule-ee.4.3.0 -p "8081:8081" -v /opt/mule/apps:/opt/mule/apps -v /opt/mule/logs:/opt/mule/logs mule-ee:4.3.0
90b6d4faa272124aefb4ef7b4d5357f3b1f58dd75fc5982e77a31f48cf30fcbf
root@aprendolinux:~/mulesoft# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
90b6d4faa272 mule-ee:4.3.0 "/opt/mule/bin/mule" 7 seconds ago Up 5 seconds 0.0.0.0:8081->8081/tcp mule-ee.4.3.0
Probar aplicaciones de Mulesoft en Docker
Una vez que tenemos el contenedor creado y el puerto donde se ofrece la aplicación mapeado al mismo puerto del equipo host (8081), ya podemos ver nuestras aplicaciones en el navegador. Para crear una aplicación sencilla puedes acceder al primer módulo del curso de Mulesoft que Ingeniero Binario te ofrece en esta misma plataforma o puedes descargar el JAR de prueba
Una vez creada la app o descargado el fichero, lo deberás colocar en el directorio «/opt/mule/apps» del equipo host. Una vez que Mulesoft hace magia debe quedar el directorio de esta forma:
jaime@aprendolinux:~$ ls /opt/mule/apps/*
/opt/mule/apps/aprendolinux_ingenierobinario-anchor.txt
/opt/mule/apps/aprendolinux_ingenierobinario:
aprendolinux_ingenierobinario.xml log4j2.xml META-INF repository
Al compartir este directorio con el contenedor, automáticamente ya podrás ver el resultado de la aplicación en un navegador, en este caso desde «http://localhost:8081/aprendoLinux»
Después de aprender cómo desplegar una aplicación de Mulesoft en Docker…
Si quieres saber más sobre Linux, te recomiendo que accedas al siguiente enlace
➡️ Aprender Linux ⬅️
Entradas relacionadas
[products columns=»4″ ids=»7280,6680,4206, 3662,5143″]
< Volver a Cursos y Tutoriales de Aplicaciones de Integración