Déployer une application Spring Boot pour Linux sur Azure App Service

Ce tutoriel présente en détail l’utilisation de Docker pour mettre en conteneur votre application Spring Boot et déployer votre propre image Docker sur un hôte Linux dans Azure App Service.

Prérequis

Pour pouvoir effectuer les étapes de ce didacticiel, vous avez besoin des éléments suivants :

Remarque

En raison des nécessités liées à la virtualisation de ce didacticiel, vous ne pouvez pas suivre les étapes de cet article sur une machine virtuelle : vous devez utiliser un ordinateur physique où les fonctionnalités de virtualisation sont activées.

Créer l’application web Spring Boot on Docker Getting Started

Les étapes suivantes expliquent en détail comment créer une application web Spring Boot simple et la tester localement.

  1. Ouvrez une invite de commandes et créez un répertoire local pour y stocker votre application, puis accédez à ce répertoire. Par exemple :

    mkdir SpringBoot
    cd SpringBoot
    
  2. Clonez l’exemple de projet Spring Boot on Docker Getting Started dans le répertoire que vous venez de créer. Par exemple :

    git clone https://github.com/spring-guides/gs-spring-boot-docker.git
    
  3. Accédez au répertoire du projet terminé. Par exemple :

    cd gs-spring-boot-docker/complete
    
  4. Générez le fichier JAR en utilisant Maven. Par exemple :

    mvn package
    
  5. Une fois l’application web créée, accédez au répertoire target où se trouve 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
    
  6. Testez l’application web en y accédant localement via un navigateur web. Par exemple, si curl est disponible et que vous configuré le serveur Tomcat pour s’exécuter sur le port 80 :

    curl http://localhost
    
  7. Vous devriez voir le message suivant : Hello Docker World

    Browse Sample App Locally

Créer un registre de conteneurs Azure à utiliser comme registre Docker privé

Les étapes suivantes expliquent en détail comment utiliser le portail Azure pour créer un registre Azure Container Registry.

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.

  1. Accédez au portail Azure et connectez-vous.

    Une fois que 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 de l’article Portail Azure, qui sont paraphrasés dans les étapes suivantes pour l’expedience.

  2. Cliquez sur l’icône de menu correspondant à Nouveau, puis sélectionnez Conteneurs et Azure Container Registry.

    Create a new Azure Container Registry

  3. Quand la page Créer un Registre de conteneurs s’affiche, entrez Nom du registre, Abonnement, Groupe de ressources, puis Emplacement. Sélectionnez ensuite Créer.

    Configure Azure Container Registry settings

  4. Sélectionnez Clés d’accès sous Paramètres et activez le commutateur Activé derrière l’Utilisateur administrateur.

    Enable admin user UI in the Azure portal

Configurer Maven pour créer une image dans Azure Container Registry

  1. Accédez au répertoire de projet terminé de votre application Spring Boot (par exemple : « C:\SpringBoot\gs-spring-boot-docker\complete » ou « /users/robert/SpringBoot/gs-spring-boot-docker/complete ») et ouvrez le fichier pom.xml avec un éditeur de texte.

  2. Mettez à jour la collection <properties> dans le fichier pom.xml avec la dernière version de jib-maven-plugin, la valeur de serveur de connexion et les paramètres d’accès définis pour votre registre Azure Container Registry à la section précédente de ce tutoriel. 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>
    
  3. Ajoutez jib-maven-plugin à la collection <plugins> dans le fichier pom.xml. Cet exemple utilise la version 3.2.0.

    Spécifiez l’image de base dans <from>/<image> ; ici, mcr.microsoft.com/openjdk/jdk:11-ubuntu. Spécifiez le nom de l’image finale à générer à partir de l’image de 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 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>
    
  4. Accédez au répertoire du projet terminé de votre application Spring Boot, et exécutez la commande suivante pour régénérer l’application et placer le conteneur dans votre registre de conteneurs Azure :

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

Remarque

  1. La commande az acr login ... tente de se connecter à Azure Container Registry, sinon vous devez fournir <username> et <password> pour jib-maven-plugin, consultez Méthodes d’authentification dans jib.
  2. Lorsque vous utilisez Jib pour envoyer (push) votre image vers Azure Container Registry, l’image n’utilise pas le fichier Dockerfile, consultez ce document pour plus d’informations.

Créer une application web sur Linux sur Azure App Service en utilisant votre image de conteneur

  1. Accédez au portail Azure et connectez-vous.

  2. Cliquez sur l’icône de menu correspondant à Créer une ressource, puis sélectionnez Compute et Web App.

    Create a new web app in the Azure portal

  3. Quand la page Application web 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 en créer un.

    • Entrez un nom unique pour le Nom de l’application, par exemple « wingtiptoyslinux ».

    • Spécifiez Publier sur Docker Container.

    • Choisissez Linux comme Système d’exploitation.

    • 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.

    Click the Next: Docker button to proceed.

    Dans la page Application web, 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 : « latest »

    • Commande de démarrage : laissez-la vide, car l’image a déjà la commande de démarrage

    Une fois que vous avez entré toutes les informations ci-dessus, sélectionnez Vérifier + créer.

    Finish by selecting Review + Create.

    • Sélectionnez Revoir + créer.

Vérifiez les informations, puis 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.

Get URL of deployment

Remarque

Azure mappera automatiquement les requêtes Internet au serveur Tomcat incorporé qui s’exécute sur le port 80. Cependant, si vous avez configuré votre serveur Tomcat incorporé pour qu’il s’exécute sur le port 8080 ou sur un port personnalisé, vous devez ajouter une variable d’environnement à votre application web qui définit le port pour votre serveur Tomcat incorporé. Pour cela, utilisez les étapes suivantes :

  1. Accédez au portail Azure et connectez-vous.

  2. Sélectionnez l’icône pour Web Apps, puis sélectionnez votre application dans la page App Services.

  3. Sélectionnez Configuration dans le volet de navigation de gauche.

  4. Dans la section Paramètres de l’application, ajoutez un nouveau paramètre nommé WEBSITES_PORT et entrez comme valeur votre numéro de port personnalisé.

  5. Cliquez sur OK. Ensuite, sélectionnez Enregistrer.

Saving a custom port number in the Azure portal

Nettoyer les ressources

Quand vous n’en avez plus besoin des ressources créées dans le cadre de cet article, utilisez le portail Azure pour les supprimer afin d’éviter des frais imprévus.

Étapes suivantes

Pour en savoir plus sur Spring et Azure, poursuivez vers le 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 :

Pour plus d’informations sur l’utilisation d’Azure avec Java, renseignez-vous sur Azure pour les développeurs Java et l’utilisation d’Azure DevOps et Java.

Pour plus d’informations sur l’exemple de projet Spring Boot on Docker, consultez Spring Boot on 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 à l’adresse https://start.spring.io/.

Pour obtenir des exemples supplémentaires sur l’utilisation d’images Docker personnalisées avec Azure, consultez Comment utiliser une image Docker personnalisée pour Azure Web App sur Linux.