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

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

Requisitos previos

Para completar los pasos de este tutorial, necesita los siguientes requisitos previos:

Nota:

Debido a los requisitos de virtualización de este tutorial, no puede seguir los pasos descritos en este artículo en una máquina virtual. Debe 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 un símbolo del sistema y cree un directorio local para contener la aplicación y cambie a ese 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 target directorio 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. Verá el mensaje siguiente mostrado: Hello Docker World

    Examen local de aplicación de ejemplo

Creación de un Azure Container Registry para usarlo como registro privado de Docker

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.

    Después de iniciar sesión en la cuenta en el portal de Azure, siga los pasos descritos en el artículo Creación de un registro de contenedor privado de Docker mediante el portal de Azure. En los pasos siguientes se parafrasan esas instrucciones por motivos de conveniencia.

  2. Seleccione el icono de menú nuevo, seleccione Contenedores y, a continuación, seleccione Azure Container Registry.

    Crear una instancia de Azure Container Registry de Azure Container Registry

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

    Configurar Azure Container Registry

  4. Seleccione Claves de acceso en Configuración y active el interruptor Habilitado del usuario administrador.

    Activación de la interfaz de usuario administrador en Azure Portal

Configura Maven para construir una imagen en tu Registro de Contenedores de Azure

  1. Vaya al directorio del proyecto completado de la aplicación de 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 el conjunto <properties> del archivo pom.xml con la versión más reciente de jib-maven-plugin, el valor del servidor de inicio de sesión y la configuración de acceso de Azure Container Registry que aparecen en 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 <plugins> colección 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 va a 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. Vaya al 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 el Azure Container Registry:

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

Nota:

El comando az acr login ... intenta iniciar sesión en Azure Container Registry. De lo contrario, debe proporcionar <username> y <password> para jib-maven-plugin. Para más información, consulte Métodos de autenticación en jib.

Cuando se usa Jib para insertar la imagen en la Azure Container Registry, la imagen no usa el Dockerfile. Para obtener más información, consulte este artículo.

Creación de 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. Seleccione el icono de menú de Crear un recurso, seleccione Proceso y, después, seleccione Aplicación web.

    Crear una aplicación web en Azure Portal

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

    • Elija su suscripción de la lista desplegable.

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

    • Escriba un nombre único para el nombre de la aplicación; por ejemplo: wingtiptoyslinux.

    • Especifique Docker Container en Publicar.

    • En el campo Sistema Operativo , elija Linux.

    • Seleccione Región:

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

    • Seleccione Siguiente: Docker.

    Haga clic en el botón Siguiente: Docker para continuar.

    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: más reciente.

    • Comando de inicio: manténgalo 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.

    Termina seleccionando Revisar y Crear.

    • Selecciona Revisar + crear.

Revise la información y seleccione Crear.

Cuando finalice la implementación, seleccione Go to resource (Ir al recurso). La página de implementación muestra la URL para acceder a la aplicación.

Obtención de la URL de implementación

Nota:

Azure asigna automáticamente solicitudes de Internet al servidor tomcat incrustado que se ejecuta en el puerto 80. Sin embargo, si configura el servidor de Tomcat insertado 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 para el servidor de Tomcat incrustado. Para agregar la variable de entorno, siga estos pasos:

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

  2. Seleccione el icono de Web Appsy seleccione su aplicación en la página Servicios de Aplicaciones.

  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.

Guardar un número de puerto personalizado en el Portal de Azure

Limpieza de recursos

Cuando ya no necesite los recursos, use el portal de Azure para eliminarlos. La eliminación de los recursos le ayuda a 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 la Azure para desarrolladores de Java y el Trabajando 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 obtener más ejemplos de cómo usar imágenes personalizadas de Docker con Azure, consulte Uso de una imagen personalizada de Docker para Azure Web App en Linux.