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:
- Una suscripción de Azure. Si todavía no la tiene, puede activar sus ventajas como suscriptor de MSDN o registrarse para obtener una cuenta de Azure gratuita.
- La Interfaz de la línea de comandos (CLI) de Azure.
- Un kit de desarrollo de Java (JDK) admitido Para más información sobre los JDK disponibles para desarrollar en Azure, consulte Compatibilidad con Java en Azure y Azure Stack.
- Herramienta de compilación Apache Maven (versión 3).
- Un cliente Git.
- Un cliente de Docker.
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.
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
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
Cambie de directorio al del proyecto finalizado, por ejemplo:
cd gs-spring-boot-docker/complete
Compile el archivo JAR con Maven, por ejemplo:
mvn package
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
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
Debería ver el mensaje siguiente mostrado: Hello Docker World
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.
Vaya a Azure Portal e inicie sesión.
Una vez que haya iniciado sesión en su cuenta en el portal de Azure, siga los pasos en el artículo Crear un registro de contenedor privado de Docker utilizando el portal de Azure, que se parafrasean en los pasos siguientes para mayor comodidad.
Haga clic en el icono de menú Nuevo, seleccione Contenedores y, a continuación, seleccione Azure Container Registry.
de Azure Container Registry
Cuando se muestra la página Crear registro de contenedor, escriba nombre del registro, suscripción, grupo de recursosy ubicación. Seleccione Crear.
Seleccione Claves de acceso en Configuración y active el conmutador Habilitado situado a continuación del usuario administrador.
Configura Maven para construir una imagen en tu Registro de Contenedores de Azure
Vaya al 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.
Actualice la colección
<properties>
en el 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 del Azure Container Registry desde 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>
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>
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:
- El comando
az acr login ...
intentará iniciar sesión en Azure Container Registry; de lo contrario, tendrá que proporcionar<username>
y<password>
para jib-maven-plugin. Consulte Métodos de autenticación en Jib. - Cuando se usa 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
Vaya a Azure Portal e inicie sesión.
Haga clic en el icono de menú de Crear un recurso, seleccione Computacióny, a continuación, seleccione Aplicación web.
Cuando aparezca la página Aplicación web en Linux, especifique la información siguiente:
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 campo Nombre de 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.
Haga clic en Siguiente: Docker.
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: mantenerlo en blanco, puesto que la imagen ya tiene el comando de inicio
Cuando haya especificado toda la información anterior, seleccione Revisar y crear.
- Seleccione Revisar + crear.
Revise la información y seleccione Crear.
Cuando la implementación se complete, seleccione Ir al grupo de recursos. La página de implementación muestra la URL para acceder a la aplicación.
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:
Vaya a Azure Portal e inicie sesión.
Seleccione el icono de Web Appsy seleccione su aplicación en la página Servicios de Aplicaciones.
En el panel de navegación de la izquierda, seleccione Configuración.
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.
Seleccione Aceptar. Después, seleccione Guardar.
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 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 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.