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 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.
Haga clic en el icono de menú Nuevo, seleccione Contenedores y, a continuación, seleccione Azure Container Registry.
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.
Seleccione Claves de acceso en Configuración y active el conmutador Habilitado situado a continuación del usuario administrador.
Configuración de Maven para compilar una imagen en el contenedor de registro de Azure
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.
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>
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, debe proporcionar<username>
y<password>
para jib-maven-plugin, consulte Métodos de autenticación en jib. - 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
Vaya a Azure Portal e inicie sesión.
Haga clic en el icono de menú Crear un recurso, seleccione Compute y, a continuación, seleccione Aplicación web.
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.
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.
- 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.
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 Web Apps y seleccione la aplicación en la página App Services.
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 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.