Déployer une application Spring Boot sur Linux sur Azure App Service
Ce tutoriel vous guide tout au long de l’utilisation de Docker pour conteneuriser votre application Spring Boot et déployer votre propre image Docker sur un hôte Linux dans le azure App Service.
Conditions préalables
Pour effectuer les étapes décrites dans ce tutoriel, vous devez disposer des conditions préalables suivantes :
- Un abonnement Azure ; Si vous n’avez pas encore d’abonnement Azure, vous pouvez activer vos avantages abonné MSDN ou vous inscrire à un compte Azure gratuit .
- Azure CLI.
- Kit de développement Java (JDK) pris en charge. Pour plus d’informations sur les JDK disponibles lors du développement sur Azure, consultez prise en charge de Java sur Azure et Azure Stack.
- Outil de génération Apache Maven (version 3).
- Un client Git.
- Un client Docker.
Remarque
En raison des exigences de virtualisation de ce didacticiel, vous ne pouvez pas suivre les étapes décrites dans cet article sur une machine virtuelle ; vous devez utiliser un ordinateur physique avec les fonctionnalités de virtualisation activées.
Créer l’application web d’initiation Spring Boot sur Docker
Les étapes suivantes expliquent les étapes requises pour créer une application web Spring Boot simple et la tester localement.
Ouvrez une invite de commandes et créez un répertoire local pour contenir votre application, puis passez à ce répertoire ; par exemple:
mkdir SpringBoot cd SpringBoot
Clonez l’exemple de projet Spring Boot sur Docker Getting Started dans le répertoire que vous avez créé ; par exemple:
git clone https://github.com/spring-guides/gs-spring-boot-docker.git
Remplacez le répertoire par le projet terminé ; par exemple:
cd gs-spring-boot-docker/complete
Générez le fichier JAR à l’aide de Maven ; par exemple:
mvn package
Une fois l’application web créée, accédez au répertoire
target
où se trouve le fichier JAR et démarrez l’application web ; par exemple:cd target java -jar spring-boot-docker-complete-0.0.1-SNAPSHOT.jar --server.port=80
Testez l’application web en y accédant localement à l’aide d’un navigateur web. Par exemple, si vous avez curl disponible et que vous avez configuré le serveur Tomcat pour qu’il s’exécute sur le port 80 :
curl http://localhost
Le message suivant doit s’afficher : Hello Docker World
Créer un Registre de conteneurs Azure à utiliser en tant que Registre Docker privé
Les étapes suivantes vous guident à l’aide du portail Azure pour créer un Registre de conteneurs Azure.
Remarque
Si vous souhaitez utiliser Azure CLI au lieu du portail Azure, suivez les étapes décrites dans Créer un registre de conteneurs Docker privé à l’aide d’Azure CLI 2.0.
Accédez au portail Azure et connectez-vous.
Une fois que vous vous êtes connecté à votre compte sur le portail Azure, suivez les étapes décrites dans l'article Créer un registre de conteneurs Docker privé à l’aide du portail Azure, qui sont paraphrasées dans les étapes suivantes pour des raisons de commodité.
Cliquez sur l’icône de menu Nouveau, sélectionnez Conteneurs, puis Azure Container Registry.
Azure Container Registry
Lorsque la page Créer un registre de conteneurs s’affiche, entrez Nom du registre, Abonnement, Groupe de ressourceset Emplacement. Sélectionnez ensuite Créer.
Sélectionnez Clés d’accès sous Paramètres et activez le commutateur Activé derrière l’Utilisateur administrateur.
Configurer Maven pour générer une image sur votre Azure Container Registry
Accédez au répertoire de projet terminé pour votre application Spring Boot (par exemple : C :\SpringBoot\gs-spring-boot-docker\complete ou /users/robert/SpringBoot/gs-spring-boot-docker/complete), puis ouvrez le fichier pom.xml avec un éditeur de texte.
Mettez à jour la collection
<properties>
dans le fichier pom.xml avec la dernière version de jib-maven-plug-in, la valeur du serveur de connexion et les paramètres d’accès de votre registre Azure Container Registry à partir de la section précédente de ce didacticiel. Par exemple:<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>
Ajoutez le plugin jib-maven à la collection
<plugins>
dans le fichier pom.xml. Cet exemple utilise la version 3.2.0.Spécifiez l’image de base à
<from>/<image>
, icimcr.microsoft.com/openjdk/jdk:11-ubuntu
. Spécifiez le nom de l’image finale à générer à partir de la base dans<to>/<image>
.Le
{docker.image.prefix}
d’authentification est le serveur de connexion dans la page de registre affichée précédemment. Le{project.artifactId}
est le nom et le numéro de version du fichier JAR à partir de la première build Maven du projet.<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>
Accédez au répertoire de projet terminé pour votre application Spring Boot et exécutez la commande suivante pour reconstruire l’application et envoyer (push) le conteneur à votre azure Container Registry :
az acr login --name wingtiptoysregistry && mvn compile jib:build
Remarque
- La commande
az acr login ...
tentera de vous connecter à Azure Container Registry. Sinon, vous devez fournir<username>
et<password>
pour jib-maven-plugin, consultez Méthodes d’authentification dans jib. - Lorsque vous utilisez Jib pour envoyer (push) votre image vers Azure Container Registry, l’image n’utilise pas le fichier Dockerfile. Pour plus d’informations, consultez ce document.
Créer une application web sur Linux sur Azure App Service à l’aide de votre image conteneur
Cliquez sur l’icône de menu de Créer une ressource, sélectionnez Calcul, puis sélectionnez Application Web.
Lorsque la page Web App sur Linux s’affiche, entrez les informations suivantes :
Choisissez votre abonnement dans la liste déroulante.
Choisissez un groupe de ressources existant, ou spécifiez un nom pour créer un groupe de ressources.
Entrez un nom unique pour le nom de l’application ; par exemple : wingtiptoyslinux
Spécifiez Publier sur
Docker Container
.Pour le champ du système d’exploitation
, choisissez Linux . Sélectionnez Région.
Acceptez Plan Linux et choisissez un Plan App Service existant, ou sélectionnez Créer nouveau pour créer un plan App Service.
Cliquez sur Suivant : Docker.
Dans la page Web App, sélectionnez Docker, puis entrez les informations suivantes :
Sélectionnez Conteneur unique.
Registre: choisissez votre conteneur ; par exemple : wingtiptoysregistry.
Image: sélectionnez l’image créée précédemment, par exemple : spring-boot-docker.
Balise: choisissez la balise de l’image, par exemple : récente.
commande de démarrage: laissez cela vide, car l’image a déjà la commande de démarrage
Après avoir entré toutes les informations ci-dessus, sélectionnez Vérifier + créer.
- Sélectionnez Revoir + créer.
Passez en revue les informations et sélectionnez Créer.
Une fois le déploiement terminé, sélectionnez Accéder à la ressource. La page de déploiement affiche l’URL permettant d’accéder à l’application.
Remarque
Azure mappe automatiquement les requêtes Internet au serveur Tomcat incorporé qui s’exécute sur le port - 80. Toutefois, si vous avez configuré votre serveur Tomcat incorporé pour qu’il s’exécute sur le port - 8080 ou un port personnalisé, vous devez ajouter une variable d’environnement à votre application web qui définit le port de votre serveur Tomcat incorporé. Pour ce faire, procédez comme suit :
Sélectionnez l'icône Web Apps, puis sélectionnez votre application dans la page App Services.
Sélectionnez Configuration dans le volet de navigation de gauche.
Dans la section Paramètres de l’application, ajoutez un nouveau paramètre nommé WEBSITES_PORT et entrez votre numéro de port personnalisé pour la valeur.
Sélectionnez OK. Sélectionnez ensuite Enregistrer.
Nettoyer les ressources
Quand vous n’en avez plus besoin, utilisez le portail Azure pour supprimer les ressources créées dans cet article pour éviter des frais inattendus.
Étapes suivantes
Pour en savoir plus sur Spring et Azure, passez au centre de documentation Spring sur Azure.
Voir aussi
Pour plus d’informations sur l’utilisation d’applications Spring Boot sur Azure, consultez les articles suivants :
- Déployer une application Spring Boot sur un cluster Kubernetes dans le Azure Container Service
Pour plus d’informations sur l’utilisation d’Azure avec Java, consultez les « Azure pour les développeurs Java » et « Travailler avec Azure DevOps et Java».
Pour plus d’informations sur l’exemple de projet Spring Boot sur Docker, consultez Spring Boot sur Docker Getting Started.
Pour obtenir de l’aide sur la mise en route de vos propres applications Spring Boot, consultez Spring Initializr à l’adresse https://start.spring.io/.
Pour plus d’informations sur la création d’une application Spring Boot simple, consultez Spring Initializr à https://start.spring.io/.
Pour obtenir des exemples supplémentaires d’utilisation d’images Docker personnalisées avec Azure, consultez Utilisation d’une image Docker personnalisée pour Azure Web App sur Linux.