Implementación de una aplicación de Spring Boot en Azure App Service en Linux

En este tutorial se explica cómo usar Docker para incluir su aplicación de Spring Boot en un contenedor e implementar su propia imagen de Docker en un host Linux en Azure App Service.

Requisitos previos

Para realizar los pasos de este tutorial, necesitará tener los siguientes requisitos previos:

Nota:

Dados los requisitos de virtualización de este tutorial, los pasos que se describen en este artículo no se pueden seguir en una máquina virtual; es preciso usar un equipo físico con características de virtualización habilitadas.

Creación de la aplicación web Spring Boot on Docker Getting Started

Los siguientes pasos le guiarán por las fases necesarias para crear una aplicación web de Spring Boot sencilla y probarla de forma local.

  1. Abra el símbolo del sistema, cree un directorio local para alojar la aplicación y cambie a dicho directorio, por ejemplo:

    mkdir SpringBoot
    cd SpringBoot
    
  2. Clone el proyecto de ejemplo Spring Boot on Docker Getting Started (inicial de Spring Boot en Docker) en el directorio que ha creado, por ejemplo:

    git clone https://github.com/spring-guides/gs-spring-boot-docker.git
    
  3. Cambie de directorio al del proyecto finalizado, por ejemplo:

    cd gs-spring-boot-docker/complete
    
  4. Compile el archivo JAR con Maven, por ejemplo:

    mvn package
    
  5. Una vez creada la aplicación web, cambie el directorio al directorio target donde se encuentra el archivo JAR e inicie la aplicación web, por ejemplo:

    cd target
    java -jar spring-boot-docker-complete-0.0.1-SNAPSHOT.jar --server.port=80
    
  6. Pruebe la aplicación web. Para ello, navegue a ella localmente mediante un explorador web. Por ejemplo, si tiene curl disponible y ha configurado el servidor Tomcat para que se ejecute en el puerto 80:

    curl http://localhost
    
  7. Debería ver el mensaje siguiente mostrado: Hello Docker World

    Browse Sample App Locally

Crear una instancia de Azure Container Registry para usarla como un Registro de Docker privado

Los siguientes pasos le muestran cómo usar Azure Portal para crear una instancia de Azure Container Registry.

Nota:

Si quiere usar la CLI de Azure en lugar de Azure Portal, siga los pasos descritos en Creación de un registro de contenedor privado de Docker con la CLI de Azure 2.0.

  1. Vaya a Azure Portal e inicie sesión.

    Una vez que haya iniciado sesión en su cuenta en Azure Portal, siga los pasos descritos en el artículo Creación de un registro de contenedor privado de Docker mediante Azure Portal , que se describen en los pasos siguientes para mayor comodidad.

  2. Haga clic en el icono de menú Nuevo, seleccione Contenedores y, a continuación, seleccione Azure Container Registry.

    Create a new Azure Container Registry

  3. Cuando aparezca la página Crear registro de contenedor, indique los valores de Nombre del Registro, Suscripción, Grupo de recursos y Ubicación. Seleccione Crear.

    Configure Azure Container Registry settings

  4. Seleccione Claves de acceso en Configuración y active el conmutador Habilitado situado a continuación del usuario administrador.

    Enable admin user UI in the Azure portal

Configuración de Maven para compilar una imagen en el contenedor de registro de Azure

  1. Navegue hasta el directorio de proyecto completado de la aplicación Spring Boot (por ejemplo, "C:\SpringBoot\gs-spring-boot-docker\complete"o"/users/robert/SpringBoot/gs-spring-boot-docker/complete") y abra el archivo pom.xml con un editor de texto.

  2. Actualice la colección <properties> del archivo pom.xml con la última versión de jib-maven-plugin, el valor del servidor de inicio de sesión y la configuración de acceso de Azure Container Registry de la sección anterior de este tutorial. Por ejemplo:

    <properties>
       <jib-maven-plugin.version>3.2.0</jib-maven-plugin.version>
       <docker.image.prefix>wingtiptoysregistry.azurecr.io</docker.image.prefix>
       <java.version>1.8</java.version>
    </properties>
    
  3. Agregue jib-maven-plugin a la colección <plugins> en el archivo pom.xml. En este ejemplo se usa la versión 3.2.0.

    Especifique la imagen de base en <from>/<image>, aquí mcr.microsoft.com/openjdk/jdk:11-ubuntu. Especifique el nombre de la imagen final que se compilará a partir de la base en <to>/<image>.

    La autenticación {docker.image.prefix} es el Servidor de inicio de sesión que se mostró anteriormente en la página del registro. {project.artifactId} es el nombre y el número de versión del archivo JAR de la primera compilación en Maven del proyecto.

    <plugin>
      <artifactId>jib-maven-plugin</artifactId>
      <groupId>com.google.cloud.tools</groupId>
      <version>${jib-maven-plugin.version}</version>
      <configuration>
         <from>
             <image>mcr.microsoft.com/openjdk/jdk:11-ubuntu</image>
         </from>
         <to>
             <image>${docker.image.prefix}/${project.artifactId}</image>
         </to>
      </configuration>
    </plugin>
    
  4. Navegue hasta el directorio de proyecto completado de la aplicación Spring Boot y ejecute el siguiente comando para recompilar la aplicación e insertar el contenedor en Azure Container Registry:

    az acr login --name wingtiptoysregistry && mvn compile jib:build
    

Nota:

  1. El comando az acr login ... intentará iniciar sesión en Azure Container Registry; de lo contrario, debe proporcionar <username> y <password> para jib-maven-plugin, consulte Métodos de autenticación en jib.
  2. Cuando use Jib para insertar la imagen en Azure Container Registry, la imagen no usará el Dockerfile, consulte este documento para obtener más información.

Crear una aplicación web en Linux en Azure App Service mediante la imagen de contenedor

  1. Vaya a Azure Portal e inicie sesión.

  2. Haga clic en el icono de menú Crear un recurso, seleccione Compute y, a continuación, seleccione Aplicación web.

    Create a new web app in the Azure portal

  3. Cuando aparezca la página Aplicación web en Linux, especifique la información siguiente:

    • Seleccione su Suscripción en la lista desplegable.

    • Seleccione un Grupo de recursos existente o especifique un nombre para crear uno nuevo.

    • Escriba un nombre único para el campo Nombre de aplicación, por ejemplo: "wingtiptoyslinux".

    • Especifique Docker Container en Publicar.

    • Elija Linux como Sistema operativo.

    • Seleccione Región:

    • Acepte Plan de Linux, elija un Plan de App Service existente o seleccione Crear nuevo para crear uno nuevo.

    • Haga clic en Siguiente: Docker.

    Click the Next: Docker button to proceed.

    En la página Aplicación web, seleccione Docker y especifique la siguiente información:

    • Seleccione Contenedor único.

    • Registro: elija el contenedor, por ejemplo: "wingtiptoysregistry"

    • Imagen: seleccione la imagen creada anteriormente, por ejemplo: "spring-boot-docker".

    • Etiqueta: elija la etiqueta de la imagen; por ejemplo: "latest"

    • Comando de inicio: mantenerla en blanco, ya que la imagen ya tiene el comando de inicio

    Después de escribir toda la información anterior, seleccione Revisar y crear.

    Finish by selecting Review + Create.

    • Seleccione Revisar + crear.

Revise la información y seleccione Crear.

Cuando la implementación se complete, seleccione Ir al recurso. La página de implementación muestra la URL para acceder a la aplicación.

Get URL of deployment

Nota:

Azure asignará automáticamente las solicitudes de Internet al servidor Tomcat integrado que se ejecuta en el puerto 80. Aun así, si ha configurado el servidor Tomcat integrado para que se ejecute en el puerto 8080, o en un puerto personalizado, debe agregar una variable de entorno a la aplicación web que defina el puerto del servidor Tomcat integrado. Para ello, siga estos pasos:

  1. Vaya a Azure Portal e inicie sesión.

  2. Seleccione el icono Web Apps y seleccione la aplicación en la página App Services.

  3. En el panel de navegación de la izquierda, seleccione Configuración.

  4. En la sección Configuración de la aplicación, agregue una nueva opción de configuración llamada WEBSITES_PORT y especifique como valor su número de puerto personalizado.

  5. Seleccione Aceptar. Después, seleccione Guardar.

Saving a custom port number in the Azure portal

Limpieza de recursos

Cuando ya no lo necesite, use Azure Portal para eliminar los recursos creados en este artículo y evitar cargos inesperados.

Pasos siguientes

Para más información acerca de Spring y Azure, vaya al centro de documentación de Azure.

Consulte también

Para obtener más información sobre el uso de aplicaciones de Spring Boot en Azure, consulte los siguientes artículos:

Para más información sobre el uso de Azure con Java, consulte Azure para desarrolladores de Java y Working with Azure DevOps and Java (Trabajo con Azure DevOps y Java).

Para obtener más información sobre el proyecto de ejemplo Spring Boot en Docker, vea Spring Boot on Docker Getting Started (Introducción a Spring Boot en Docker).

Para obtener ayuda para dar sus primeros pasos con sus propias aplicaciones de Spring Boot, consulte Spring Initializr en https://start.spring.io/.

Para más información sobre cómo empezar a crear una sencilla aplicación de Spring Boot, consulte Spring Initializr en https://start.spring.io/.

Para ver más ejemplos de cómo usar imágenes de Docker personalizadas con Azure, consulte Uso de una imagen personalizada de Docker para Web App on Linux de Azure.