Déployer des fichiers sur le Service d’application

Cet article vous montre comment déployer votre code en tant que package ZIP, WAR, JAR ou EAR pour le Service d’application Azure . Il montre également comment déployer des fichiers individuels sur le e Service d’application, séparément de votre package d’application.

Prérequis

Pour effectuer les étapes de cet article, créez une application App Service ou utilisez une application créée pour un autre didacticiel.

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.

Créer un package ZIP de projet

[IMPORTANT] Lorsque vous créez le package ZIP de déploiement, n’incluez pas le répertoire racine, mais uniquement les fichiers et répertoires qu’il contient. Si vous téléchargez un référentiel GitHub en tant que fichier ZIP, vous ne pourrez pas déployer ce fichier tel que pour App Service. GitHub ajoute des répertoires imbriqués supplémentaires qui ne fonctionnent pas avec App Service.

Dans une fenêtre de terminal locale, accédez au répertoire racine de votre projet d’application.

Ce répertoire doit contenir le fichier d’entrée à votre application web, tel que index.html, index.php et app.js. Il peut également contenir des fichiers de gestion de package comme project.json, composer.json, package.json, bower.json et requirements.txt.

Sauf si vous souhaitez qu’App Service exécute l’automatisation du déploiement à votre place, exécutez toutes les tâches de compilation (par exemple, npm, bower, gulp, composer et pip) et assurez-vous que vous disposez de tous les fichiers nécessaires pour exécuter l'application. Cette étape est requise si vous souhaitez exécuter votre package directement.

Créez une archive ZIP contenant tous les éléments de votre projet. Pour les projets dotnet, il s’agit de tout ce qui se trouve dans le répertoire de sortie de la commande dotnet publish (à l’exception du répertoire de sortie lui-même). Par exemple, la commande suivante dans votre terminal pour créer un package ZIP du contenu du répertoire actif :

# Bash
zip -r <file-name>.zip .

# PowerShell
Compress-Archive -Path * -DestinationPath <file-name>.zip

Déployer un package ZIP

Lorsque vous déployez un package ZIP, le e Service d’application décompresse son contenu dans le chemin d’accès par défaut de votre application (D:\home\site\wwwroot pour Windows, /home/site/wwwroot pour Linux).

Ce déploiement de package ZIP utilise le même service Kudu que celui qui pilote les déploiements continus basés sur l’intégration. Kudu prend en charge les fonctionnalités suivantes pour le déploiement de package ZIP :

  • Suppression des fichiers laissés par un déploiement précédent
  • Option pour activer le processus de génération par défaut, qui inclut la restauration de package
  • Personnalisation du déploiement, notamment exécution de scripts de déploiement
  • Journaux d’activité de déploiement
  • La taille d’un package ne doit pas dépasser 2 048 Mo.

Pour plus d’informations, consultez la documentation Kudu.

Notes

Les fichiers du package ZIP ne sont copiés que si leurs horodatages ne correspondent pas à ce qui est déjà déployé. La génération d’un fichier zip selon un processus de build qui met en cache les sorties contribue à accélérer les déploiements. Pour plus d’informations, consultez Déploiement à partir d’un fichier zip ou d’une URL.

Déployez un package ZIP sur votre application Web à l’aide de la commande AZ webapp deploy . La commande CLI utilise l' API de publication Kudu pour déployer les fichiers et peut être entièrement personnalisée.

L’exemple suivant envoie un package ZIP sur votre site. Spécifiez le chemin d’accès à votre package ZIP local pour --src-path.

az webapp deploy --resource-group <group-name> --name <app-name> --src-path <zip-package-path>

Cette commande redémarre l’application après le déploiement du package ZIP.

En fonction de la configuration de mise en réseau de vos applications web, l’accès direct au site à partir de votre environnement local peut être bloqué. Pour déployer votre code dans ce scénario, vous pouvez publier votre fichier ZIP sur un système de stockage accessible depuis l’application web et déclencher l’application pour extraire le ZIP de l’emplacement de stockage, au lieu de pousser le ZIP vers l’application web. Consultez cet article sur le déploiement d’applications web sécurisées en réseau pour plus d'informations.

L’exemple suivant utilise le paramètre --src-url pour spécifier l’URL d’un compte de stockage Azure à partir duquel le site doit extraire le fichier ZIP.

az webapp deploy --resource-group <group-name> --name <app-name> --src-url "https://storagesample.blob.core.windows.net/sample-container/myapp.zip?sv=2021-10-01&sb&sig=slk22f3UrS823n4kSh8Skjpa7Naj4CG3

Activer l’automatisation de build pour le déploiement ZIP

Par défaut, le moteur de déploiement suppose qu’un package ZIP est prêt à s’exécuter en l’état et n’effectue aucune automatisation de build. Pour permettre la même automatisation de build que dans un déploiement Git, définissez le paramètre d’application SCM_DO_BUILD_DURING_DEPLOYMENT en exécutant la commande suivante dans Azure Cloud Shell :

az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings SCM_DO_BUILD_DURING_DEPLOYMENT=true

Pour plus d’informations, consultez la documentation Kudu.

Que se passe-t-il au niveau de mon application pendant le déploiement ?

Toutes les méthodes de déploiement officiellement prises en charge apportent des modifications aux fichiers dans le dossier /home/site/wwwroot de votre application. Ces fichiers sont utilisés pour exécuter votre application. Par conséquent, le déploiement peut échouer si des fichiers sont verrouillés. L’application peut également se comporter de façon imprévisible pendant le déploiement, car tous les fichiers ne sont pas tous mis à jour en même temps. Cela n’est pas souhaitable pour une application faisant face au client. Il existe différentes manières d’éviter ces problèmes :

Déployer des packages WAR/JAR/EAR

Vous pouvez déployer votre package WAR, JARou EAR sur le service d’application pour exécuter votre application Web Java à l’aide de l’interface CLI Azure, PowerShell ou l’API de publication Kudu.

Le processus de déploiement utilisé par ces étapes place le package sur le partage de contenu de l’application avec la bonne convention d’affectation de noms et la bonne structure d’annuaire (consulter Référence sur l’API de publication Kudu), et il s’agit de l’approche recommandée. Si vous déployez des packages WAR/JAR/EAR à l’aide de FTP ou de WebDeploy à la place, vous pouvez rencontrer des échecs inconnus en raison d’erreurs dans l’affectation de noms ou la structure.

Déployez un package WAR sur le protocole EAP Tomcat ou JBoss à l’aide de la commande AZ webapp deploy . Spécifiez le chemin d’accès à votre package Java local pour --src-path.

az webapp deploy --resource-group <group-name> --name <app-name> --src-path ./<package-name>.war

En fonction de la configuration de mise en réseau de vos applications web, l’accès direct au site à partir de votre environnement local peut être bloqué. Pour déployer votre code dans ce scénario, vous pouvez publier votre fichier ZIP sur un système de stockage accessible depuis l’application web et déclencher l’application pour extraire le ZIP de l’emplacement de stockage, au lieu de pousser le ZIP vers l’application web. Consultez cet article sur le déploiement d’applications web sécurisées en réseau pour plus d'informations.

L’exemple suivant utilise le paramètre --src-url pour spécifier l’URL d’un compte de Stockage Azure à partir duquel l’application Web doit extraire le fichier WAR.

az webapp deploy --resource-group <group-name> --name <app-name> --src-url "https://storagesample.blob.core.windows.net/sample-container/myapp.war?sv=2021-10-01&sb&sig=slk22f3UrS823n4kSh8Skjpa7Naj4CG3 --type war

La commande CLI utilise l' API de publication Kudu pour déployer le package et peut être entièrement personnalisée.

Déployer des fichiers individuels

Déployez un script de démarrage, une bibliothèque et un fichier statique dans votre application Web à l’aide de la commande AZ webapp deploy avec le paramètre --type.

Si vous déployez un script de démarrage de cette manière, le Service d’application utilise automatiquement votre script pour démarrer votre application.

La commande CLI utilise l' API de publication Kudu pour déployer les fichiers et peut être entièrement personnalisée.

Utilisation d'un script de démarrage

az webapp deploy --resource-group <group-name> --name <app-name> --src-path scripts/startup.sh --type=startup

Déployer un fichier de bibliothèque

az webapp deploy --resource-group <group-name> --name <app-name> --src-path driver.jar --type=lib

Déployer un fichier statique

az webapp deploy --resource-group <group-name> --name <app-name> --src-path config.json --type=static

référence sur l’API de publication Kudu

L'API Kudu publish vous permet de spécifier les mêmes paramètres depuis la commande CLI en tant que paramètres de requête d’URL. Pour vous authentifier avec l’API kudu, vous pouvez utiliser l’authentification de base avec les informations d’identification de déploiement de votre application.

Le tableau ci-dessous présente les paramètres de requête disponibles, leurs valeurs autorisées et leurs descriptions.

Clé : Valeurs autorisées Description Obligatoire Type
type war|jar|ear|lib|startup|static|zip Le type de l’artefact déployé définit le chemin d’accès cible par défaut et indique à l’application Web comment le déploiement doit être géré.
- type=zip : Déployez un package ZIP en dézippant le contenu sur /home/site/wwwroot. Le paramètre path est facultatif.
- type=war : Déployez un package WAR. Par défaut, le package WAR est déployé sur /home/site/wwwroot/app.war. Le chemin d’accès cible peut être spécifié avec path.
- type=jar : Déployez un package JAR sur /home/site/wwwroot/app.jar . Le paramètre path est ignoré
- type=ear : Déployez un package EAR sur /home/site/wwwroot/app.ear. Le paramètre path est ignoré
- type=lib : Déployez un fichier de bibliothèque JAR. Par défaut, le fichier est déployé sur /home/site/libs. Le chemin d’accès cible peut être spécifié avec path.
- type=static : Déployez un fichier statique (par exemple, un script). Par défaut, le fichier est déployé sur /home/site/wwwroot.
- type=startup: Déployez un script que le Service d’application utilise automatiquement comme script de démarrage pour votre application. Par défaut, le script est déployé sur D:\home\site\scripts\<name-of-source> pour Windows et home/site/wwwroot/startup.sh pour Linux. Le chemin d’accès cible peut être spécifié avec path.
Oui String
restart true|false Par défaut, l’API redémarre l’application après l’opération de déploiement (restart=true). Pour déployer plusieurs artefacts, évitez les redémarrages sur l’ensemble, sauf le déploiement final, en définissant restart=false. Non Boolean
clean true|false Spécifie s’il faut nettoyer (supprimer) le déploiement cible avant de déployer l’artefact ici. Non Boolean
ignorestack true|false L’API de publication utilise la variable d’environnement WEBSITE_STACK pour choisir les valeurs par défaut sécurisées en fonction de la pile de langue de votre site. La définition de ce paramètre sur false désactive les valeurs par défaut spécifiques au langage. Non Boolean
path "<absolute-path>" Chemin d’accès absolu vers lequel déployer l’artefact. Par exemple, "/home/site/deployments/tools/driver.jar", "/home/site/scripts/helper.sh". Non String

Étapes suivantes

Pour des scénarios de déploiement plus avancés, consultez Déploiement Git local vers Azure App Service. Le déploiement GIT vers Azure autorise le contrôle de version, la restauration du package, MSBuild et bien plus encore.

Plus de ressources