Table of Contents

Despliegue de aplicaciones web

Desplegar localmente en tomcat

Para desplegar aplicaciones web utilizaremos los siguientes plugins de maven:

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:

. . .
<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

Desplegar utilizando Docker

Crear la imagen de nuestra aplicación web

Dockerfile
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.

.env
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.

docker-compose.yaml
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