Para desplegar aplicaciones web utilizaremos los siguientes plugins de maven:
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:
webapp/META-INF/context.ml
en la línea <Content path=“/taller”/>
. . . <build> <finalName>TallerWebApp</finalName> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.2.2</version> </plugin> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <url>http://localhost:8080/manager/text</url> <server>tomcat8</server> <path>/taller</path> <username>tomcat</username> <password>tomcat</password> </configuration> </plugin> </plugins> </pluginManagement> </build> . . .
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
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 .
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
© 2023 Santiago Faci