miércoles, 30 de octubre de 2019

Docker en Windows parte 6: DockerFile y WildFly

Hola. Veamos como bajar una imagen WildFly y subirle un War nuestro. Además de agregar al contenedor el panel de Administración.

Ir a Parte 5: https://naldog.blogspot.com/2019/10/docker-en-windows-parte-5-hola-mundo.html
______________________________

War de ejemplo

Para este ejercicio, debes tener un archivo WAR de ejemplo. Para los que vienen de .Net es como un paquete con todo el sitio (JSS, CSS, páginas, etc).
Si quieren usan mi ejemplo, pesa 7 megas, es un JSF 2.2 con Primefaces 7:
https://darknromhacking.com/archivos/primefaces.war

Si quieres haces un ejemplo tu mismo, en Eclipse lo creas, pruebas usando un Web Server como Tomcat 9 que es liviano y lo exportas como WAR.

Copiar Archivos

Crea una carpeta en el disco C:\docker\war
Dentro de esa carpeta war copia el primefaces.war o el war que desarrollaste.

Crear DockerFile

Lo primero es el FROM, te dice que imagen bajar de docker hub

Ejemplo, bajará ultima versión de Wildfly

FROM jboss/wildfly

O le puedes dar una versión específica.

FROM jboss/wildfly:10.1.0.Final

El dockerfile agrégale una segunda línea

ADD archivo-local carpeta-remoto

entonces en nuestro caso sería

ADD war/primefaces.war /opt/jboss/wildfly/standalone/deployments/

que copia el archivo war a la carpeta de deploy (esto lo da el WildFly en su sitio oficial https://hub.docker.com/r/jboss/wildfly/)

Por lo tanto, así quedaría nuestro archivo dockerfile

FROM jboss/wildfly
ADD war/primefaces.war /opt/jboss/wildfly/standalone/deployments/

Ejecutar Build


Con PowerShell ir a

CD C:\docker

Luego haz build del dockerfile y colócale un nombre "miwild" y versión 1.0

docker build -t miwild:1.0 .

Verifica como quedó con 

docker images

Luego ejecuta la imagen creando el contenedor usando

docker run -it --name cnt_wild -p 8080:8080 miwild:1.0

En el log se verá que cargó el war. Un punto importante es ver donde dice

context /primefaces

Ya que indica la url de acceso que veremos luego.

Probando

Ve al navegador y primero veamos que levantó Wildfly en ese port 8080:
Ahora la prueba real, ve a la ruta que dijimos arriba en "context"

http://localhost:8080/primefaces/

Y verás la aplicación que yo hice o la tuya si hiciste tu war.

Agregando módulo de Administración de Wildfly

Si queremos que el Wildfly tenga módulo de Admin, para agregar más wars, o deployar más fácilmente, podemos agregar un usuario/clave para esto.

La clave está en leer la documentación oficial: https://hub.docker.com/r/jboss/wildfly/dockerfile

Lo primero es ir a PowerShell y coloca control + C para detener el contenedor anterior.

Luego elimínelo con

docker rm cnt_wild

También elimina la imagen con

docker rmi <id>

Ahora, modifiquemos el dockerfile.
Agreguemos un usuario Admin de wildfly. Para esto usamos RUN.
usuario admin
pass: Admin123 (es para ambiente desarrollo, no es producción, que hay otras formas)

RUN /opt/jboss/wildfly/bin/add-user.sh admin Admin123 --silent

Además se debe usar el comando CMD para arrancar Wildfly usando el host 0.0.0.0 tanto para el sitio de aplicaciones (-b ip) como el de administración (-bmanagement ip).

CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0"]

Así quedaría el dockerfile

FROM jboss/wildfly
USER jboss
ADD war/primefaces.war /opt/jboss/wildfly/standalone/deployments/
RUN /opt/jboss/wildfly/bin/add-user.sh admin Admin123 --silent
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0"]

Build

Igual que antes, pero siempre es bueno subir la versión ya que la imagen cambió, en mi caso de 1.0 a 1.1.

docker build -t miwild:1.1 .

Ejecutando

Ahora es igual que antes, pero hay que exponer un puerto extra por ejemplo 9990 esto se hace con un segundo -p

docker run -it --name cnt_wild -p 8080:8080 -p 9990:9990 miwild:1.1

Probando Panel Admin

Si vas a 

http://localhost:9990

Verás que te pide usuario y clave:
Coloca el usuario y clave que indicamos y accederás al sistema de administración.
Ya aquí puedes jugar, agregar wars, detenerlos, deployar, monitorear, etc.
__________

Esto por hoy, espero les sirva.

Ir a Parte 5: https://naldog.blogspot.com/2019/10/docker-en-windows-parte-5-hola-mundo.html