====== Despliegue de aplicaciones web ======
===== Desplegar localmente en tomcat =====
Para desplegar aplicaciones web utilizaremos los siguientes plugins de maven:
* //maven-war-plugin//: Nos permite empaquetar nuestra aplicación web como un fichero war
* //tomcat7-maven-plugin//: Nos permitirá, con una simple configuración en nuestro fichero ''pom.xml'', disponer de una serie de comandos para desplegar, replegar y redesplegar nuestra aplicación web.
Para ello, necesitamos añadir el siguiente bloque a nuestro fichero ''pom.xml''. Con ello, añadimos ambos plugins y, en concreto para //tomcat7-maven-plugin//, añadimos algunos valores que permite indicar dónde se encuentra nuestro tomcat y el usuario y contraseña con el que podremos desplegar la aplicación:
* url: La url al manager de consola para el despliegue (el host y puerto dependerán de lo que hayamos configurado en tomcat, aunque por defecto éstos serán los valores adecuados)
* server: El nombre asignado al servidor tomcat. Podemos asignar el valor que queramos
* path: La ruta en la que hemos definido nuestra aplicación. Se corresponde con el valor que hemos asignado al fichero ''webapp/META-INF/context.ml'' en la línea ''''
* username: El usuario que hemos configurado en tomcat (Más detalles en [[apuntes:tomcat#configuracion_basica|la configuración básica de Tomcat]])
* password: La contraseña que hemos configurado en tomcat (Más detalles [[apuntes:tomcat#configuracion_basica|la configuración básica de Tomcat]])
. . .
TallerWebApp
org.apache.maven.plugins
maven-war-plugin
3.2.2
org.apache.tomcat.maven
tomcat7-maven-plugin
2.2
http://localhost:8080/manager/text
tomcat8
/taller
tomcat
tomcat
. . .
Desplegar (deploy) la aplicación en tomcat:
santi@zenbook:$ mvn tomcat7:deploy
Replegar (undeploy) la aplicación de tomcat:
santi@zenbook:$ mvn tomcat7:undeploy
Redesplegar (redeploy = undeploy + deploy) la aplicación en tomcat:
santi@zenbook:$ mvn tomcat7:redeploy
===== Desplegar utilizando Docker =====
==== Crear la imagen de nuestra aplicación web ====
FROM tomcat:9.0.58-jdk17-openjdk-slim
ADD ./target/ParqueNaturalApp /usr/local/tomcat/webapps/webapp
CMD ["catalina.sh", "run"]
Crear la imagen:
santi@zenbook:$ docker build -t webapp .
==== Desplegar utilizando Docker Compose ====
El primer paso será crear, dentro del proyecto, un fichero donde definir las variables de aplicación que necesitemos. Eso se hace, habitualmente, creando un fichero ''.env'' donde, en este caso, definiremos valores como usuario, contraseña, base de datos y puerto donde MySQL escucha, asi como el puerto que queremos que utilice Tomcat.
MYSQL_USER=test
MYSQL_PASSWORD=test
MYSQL_DATABASE=test
MYSQL_PORT=3306
TOMCAT_PORT=8080
A continuación crearemos el fichero ''docker-compose.yaml'' donde definiremos los dos servicios que necesitamos: nuestra aplicación web (utilizando la imagen que ya hemos creado) y un servidor MySQL.
version: "3.4"
name: parquenatural-webapp
services:
mysql:
image: mysql:8.0.33-debian
container_name: mysql
restart: unless-stopped
env_file: ./.env
environment:
MYSQL_DATABASE: $MYSQL_DATABASE
MYSQL_USER: $MYSQL_USER
MYSQL_PASSWORD: $MYSQL_PASSWORD
MYSQL_ROOT_PASSWORD: $MYSQL_PASSWORD
ports:
- $MYSQL_PORT:$MYSQL_PORT
volumes:
- db:/var/lib/mysql
networks:
- network1
app:
image: parquenatural
container_name: parquenatural
env_file: ./.env
ports:
- $TOMCAT_PORT:$TOMCAT_PORT
depends_on:
- mysql
restart: on-failure
networks:
- network1
volumes:
db:
networks:
network1:
name: parquenatural
Para poner en marcha ambos contenedores:
santi@zenbook:$ docker compose up -d
----
(c) 2023 Santiago Faci