FAQ d’Azure App Service sur LinuxAzure App Service on Linux FAQ

Avec la publication d’App Service sur Linux, nous travaillons à l’ajout de fonctionnalités et à l’amélioration de notre plateforme.With the release of App Service on Linux, we're working on adding features and making improvements to our platform. Cet article fournit des réponses aux questions que nos clients nous ont posées récemment.This article provides answers to questions that our customers have been asking us recently.

Si vous avez une question, un commentaire sur cet article.If you have a question, comment on this article.

Images prédéfiniesBuilt-in images

Je veux répliquer les conteneurs Docker intégrés fournis par la plateforme. Où se trouvent ces fichiers ?I want to fork the built-in Docker containers that the platform provides. Where can I find those files?

Vous trouverez tous les fichiers Docker sur GitHub.You can find all Docker files on GitHub. Vous trouverez tous les conteneurs Docker sur Docker Hub.You can find all Docker containers on Docker Hub.

Quelles sont les valeurs attendues de la section Fichier de démarrage lorsque je configure la pile d’exécution ?What are the expected values for the Startup File section when I configure the runtime stack?

PileStack Valeur attendueExpected Value
Java SEJava SE la commande pour démarrer votre application JAR (par exemple, java -jar my-app.jar --server.port=80)the command to start your JAR app (for example, java -jar my-app.jar --server.port=80)
Tomcat, WildflyTomcat, Wildfly l’emplacement d’un script pour effectuer toutes les configurations nécessaires (par exemple, /home/site/deployments/tools/startup_script.sh)the location of a script to perform any necessary configurations (for example, /home/site/deployments/tools/startup_script.sh)
Node.jsNode.js le fichier de configuration PM2 ou votre fichier de scriptthe PM2 configuration file or your script file
.Net Core.Net Core le nom de la DLL compilée en tant que dotnet <myapp>.dllthe compiled DLL name as dotnet <myapp>.dll
RubyRuby le script Ruby avec lequel initialiser votre applicationthe Ruby script that you want to initialize your app with

Ces commandes ou scripts sont exécutés après le démarrage du conteneur Docker intégré, mais avant le démarrage de votre code d’application.These commands or scripts are executed after the built-in Docker container is started, but before your application code is started.

gestionManagement

Que se passe-t-il lorsque j’appuie sur le bouton Redémarrer dans le portail Azure ?What happens when I press the restart button in the Azure portal?

Cette action revient à redémarrer Docker.This action is the same as a Docker restart.

Puis-je utiliser Secure Shell (SSH) pour me connecter à la machine virtuelle du conteneur d’application ?Can I use Secure Shell (SSH) to connect to the app container virtual machine (VM)?

Oui, vous pouvez le faire via le site de gestion de contrôle de code source (SCM).Yes, you can do that through the source control management (SCM) site.

Notes

Vous pouvez également vous connecter au conteneur d’application directement à partir de votre ordinateur de développement local à l’aide de SSH, SFTP ou Visual Studio Code (pour le débogage dynamique des applications Node.js).You can also connect to the app container directly from your local development machine using SSH, SFTP, or Visual Studio Code (for live debugging Node.js apps). Pour plus d’informations, consultez Remote debugging and SSH in App Service on Linux (Débogage à distance et technologie SSH dans App Service sur Linux).For more information, see Remote debugging and SSH in App Service on Linux.

Comment puis-je créer un plan App Service Linux via un kit de développement ou un modèle Azure Resource Manager ?How can I create a Linux App Service plan through an SDK or an Azure Resource Manager template?

Vous devez définir le champ reserved du service d’application sur true.You should set the reserved field of the app service to true.

Intégration et déploiement continusContinuous integration and deployment

Mon application web utilise toujours une ancienne image de conteneur Docker après la mise à jour de l’image sur Docker Hub. Prenez-vous en charge l’intégration et le déploiement continus de conteneurs personnalisés ?My web app still uses an old Docker container image after I've updated the image on Docker Hub. Do you support continuous integration and deployment of custom containers?

Oui. Pour configurer l’intégration/le déploiement continu(e) pour Azure Container Registry ou DockerHub, consultez Déploiement continu avec Web App pour conteneurs.Yes, to set up continuous integration/deployment for Azure Container Registry or DockerHub, by following Continuous Deployment with Web App for Containers. Pour les registres privés, vous pouvez actualiser le conteneur en arrêtant puis démarrant votre application web.For private registries, you can refresh the container by stopping and then starting your web app. Vous pouvez également modifier ou ajouter un paramètre d’application factice pour forcer une actualisation de votre conteneur.Or you can change or add a dummy application setting to force a refresh of your container.

Prenez-vous en charge les environnements intermédiaires ?Do you support staging environments?

Oui.Yes.

Puis-je utiliser WebDeploy/MSDeploy pour déployer mon application web ?Can I use WebDeploy/MSDeploy to deploy my web app?

Oui, vous devez définir le paramètre d’application WEBSITE_WEBDEPLOY_USE_SCM sur false.Yes, you need to set an app setting called WEBSITE_WEBDEPLOY_USE_SCM to false.

Le déploiement Git de mon application échoue quand j’utilise une application web Linux. Comment puis-je résoudre ce problème ?Git deployment of my application fails when using Linux web app. How can I work around the issue?

Si le déploiement Git sur votre application web Linux échoue, choisissez l’une des options suivantes pour déployer le code de votre application :If Git deployment fails to your Linux web app, choose one of the following options to deploy your application code:

  • Utilisez la fonctionnalité Livraison continue (préversion) : Vous pouvez stocker le code source de votre application dans un référentiel Git Azure DevOps ou un référentiel GitHub pour utiliser la livraison continue Azure.Use the Continuous Delivery (Preview) feature: You can store your app’s source code in an Azure DevOps Git repo or GitHub repo to use Azure Continuous Delivery. Pour plus d’informations, consultez Configurer la livraison continue pour une application web Linux.For more information, see How to configure Continuous Delivery for Linux web app.

  • Utilisez l’API de déploiement ZIP : Pour utiliser cette API, connectez-vous via SSH à votre application web et accédez au dossier où vous souhaitez déployer votre code.Use the ZIP deploy API: To use this API, SSH into your web app and go to the folder where you want to deploy your code. Exécutez le code suivant :Run the following code:

    curl -X POST -u <user> --data-binary @<zipfile> https://{your-sitename}.scm.azurewebsites.net/api/zipdeploy
    

    Si vous obtenez une erreur stipulant que la commande curl est introuvable, veillez à installer curl à l’aide de apt-get install curl avant d’exécuter la commande curl précédente.If you get an error that the curl command is not found, make sure you install curl by using apt-get install curl before you run the previous curl command.

Support multilingueLanguage support

Je souhaite utiliser des sockets web dans mon application Node.js. Y a-t-il des configurations ou des paramètres spéciaux à définir ?I want to use web sockets in my Node.js application, any special settings, or configurations to set?

Oui, vous devez désactiver perMessageDeflate dans votre code Node.js côté serveur.Yes, disable perMessageDeflate in your server-side Node.js code. Par exemple, si vous utilisez socket.io, utilisez le code suivant :For example, if you are using socket.io, use the following code:

const io = require('socket.io')(server,{
  perMessageDeflate :false
});

Prenez-vous en charge les applications .NET Core non compilées ?Do you support uncompiled .NET Core apps?

Oui.Yes.

Prenez-vous en charge Composer en tant que gestionnaire de dépendances pour les applications PHP ?Do you support Composer as a dependency manager for PHP apps?

Oui. Lors d’un déploiement Git, Kudu doit détecter que vous déployez une application PHP (grâce à la présence d’un fichier composer.lock) et déclenchera une installation Composer.Yes, during a Git deployment, Kudu should detect that you're deploying a PHP application (thanks to the presence of a composer.lock file), and Kudu will then trigger a composer install.

Conteneurs personnalisésCustom containers

J’utilise mon propre conteneur personnalisé. Je souhaite que la plateforme monte un partage SMB dans le répertoire /home/.I'm using my own custom container. I want the platform to mount an SMB share to the /home/ directory.

Si le paramètre WEBSITES_ENABLE_APP_SERVICE_STORAGE est non spécifié ou est défini sur true, le répertoire /home/ sera partagé par les instances, et les fichiers écrits seront conservés après chaque redémarrage.If WEBSITES_ENABLE_APP_SERVICE_STORAGE setting is unspecified or set to true, the /home/ directory will be shared across scale instances, and files written will persist across restarts. Si vous définissez explicitement WEBSITES_ENABLE_APP_SERVICE_STORAGE sur false, le montage est désactivé.Explicitly setting WEBSITES_ENABLE_APP_SERVICE_STORAGE to false will disable the mount.

Mon conteneur personnalisé met longtemps à démarrer, et la plateforme le redémarre avant qu’il ait terminé.My custom container takes a long time to start, and the platform restarts the container before it finishes starting up.

Vous pouvez configurer le temps que la plateforme doit attendre avant qu’elle redémarre votre conteneur.You can configure the amount of time the platform will wait before it restarts your container. Pour ce faire, définissez le paramètre d’application WEBSITES_CONTAINER_START_TIME_LIMIT sur la valeur souhaitée.To do so, set the WEBSITES_CONTAINER_START_TIME_LIMIT app setting to the value you want. La valeur par défaut est de 230 secondes, la valeur maximale de 1800 secondes.The default value is 230 seconds, and the maximum value is 1800 seconds.

Quel est le format de l’URL du serveur de registre privé ?What is the format for the private registry server URL?

Vous devez fournir l’URL de registre complète, y compris http:// ou https://.Provide the full registry URL, including http:// or https://.

Quel est le format du nom d’image dans l’option de registre privé ?What is the format for the image name in the private registry option?

Ajoutez le nom complet de l’image, comprenant l’URL de registre privé (par exemple, myacr.azurecr.io/dotnet:latest).Add the full image name, including the private registry URL (for example, myacr.azurecr.io/dotnet:latest). Les noms d’image qui utilisent un port personnalisé ne peuvent pas être entrés par le biais du portail.Image names that use a custom port cannot be entered through the portal. Pour définir docker-custom-image-name, utilisez l’outil en ligne de commande az.To set docker-custom-image-name, use the az command-line tool.

Je veux exposer plusieurs ports sur l’image de mon conteneur personnalisé.Can I expose more than one port on my custom container image?

Nous ne prenons pas en charge l’exposition de plusieurs ports.We don't support exposing more than one port.

Puis-je apporter mon propre système de stockage ?Can I bring my own storage?

Oui, le mode Bring Your Own Storage est disponible en préversion.Yes, bring your own storage is in preview.

Pourquoi est-il impossible de parcourir le système de fichiers de mon conteneur personnalisé à partir du site SCM ?Why can't I browse my custom container's file system or running processes from the SCM site?

Le site SCM s’exécute dans un conteneur distinct.The SCM site runs in a separate container. Vous ne pouvez pas vérifier le système de fichiers ou les processus en cours d’exécution du conteneur d’application.You can't check the file system or running processes of the app container.

Mon conteneur personnalisé écoute un autre port que le port 80. Comment puis-je configurer mon application pour acheminer les demandes vers ce port ?My custom container listens to a port other than port 80. How can I configure my app to route requests to that port?

Nous avons la détection automatique du port.We have automatic port detection. Vous pouvez également spécifier le paramètre d’application WEBSITES_PORT et lui attribuer la valeur du numéro de port attendu.You can also specify an app setting called WEBSITES_PORT and give it the value of the expected port number. Auparavant, la plateforme utilisait le paramètre d’application PORT.Previously, the platform used the PORT app setting. Nous avons l’intention de déconseiller ce paramètre d’application pour utiliser exclusivement WEBSITES_PORT.We are planning to deprecate this app setting and to use WEBSITES_PORT exclusively.

Dois-je implémenter HTTPS dans mon conteneur personnalisé ?Do I need to implement HTTPS in my custom container?

Non, la plateforme gère l’annulation HTTPS au niveau des serveurs frontaux partagés.No, the platform handles HTTPS termination at the shared front ends.

Plusieurs conteneurs avec Docker ComposeMulti-container with Docker Compose

Comment configurer Azure Container Registry (ACR) de manière à utiliser plusieurs conteneurs ?How do I configure Azure Container Registry (ACR) to use with multi-container?

Pour utiliser ACR avec plusieurs conteneurs, toutes les images de conteneur doivent être hébergées sur le même serveur de Registre ACR.In order to use ACR with multi-container, all container images need to be hosted on the same ACR registry server. Une fois qu’elles se trouvent sur le même serveur de Registre, vous devez créer des paramètres d’application, puis mettre à jour le fichier config Docker Compose en y ajoutant le nom de l’image ACR.Once they are on the same registry server, you will need to create application settings and then update the Docker Compose configuration file to include the ACR image name.

Créez les paramètres d’application suivants :Create the following application settings:

  • DOCKER_REGISTRY_SERVER_USERNAMEDOCKER_REGISTRY_SERVER_USERNAME
  • DOCKER_REGISTRY_SERVER_URL (URL complète, p. ex. : https://<server-name>.azurecr.io)DOCKER_REGISTRY_SERVER_URL (full URL, ex: https://<server-name>.azurecr.io)
  • DOCKER_REGISTRY_SERVER_PASSWORD (activez l’accès administrateur dans les paramètres ACR)DOCKER_REGISTRY_SERVER_PASSWORD (enable admin access in ACR settings)

Dans le fichier de configuration, référencez votre image ACR comme dans l’exemple suivant :Within the configuration file, reference your ACR image like the following example:

image: <server-name>.azurecr.io/<image-name>:<tag>

Comment savoir quel conteneur est accessible via Internet ?How do I know which container is internet accessible?

  • Un seul conteneur peut être ouvert en vue d’y accéderOnly one container can be open for access
  • Seuls les ports 80 et 8080 sont accessibles (ports exposés)Only port 80 and 8080 is accessible (exposed ports)

Voici les règles pour déterminer quel conteneur est accessible, par ordre d’importance :Here are the rules for determining which container is accessible - in the order of precedence:

  • Le paramètre d’application WEBSITES_WEB_CONTAINER_NAME doit être défini sur le nom du conteneur.Application setting WEBSITES_WEB_CONTAINER_NAME set to the container name
  • Le premier conteneur doit définir le port 80 ou 8080.The first container to define port 80 or 8080
  • Si aucune de ces règles n’est appliquée, le premier conteneur défini dans le fichier sera accessible (exposé).If neither of the above is true, the first container defined in the file will be accessible (exposed)

Tarifs et contrat SLAPricing and SLA

À présent que le service est disponible généralement, quels sont les tarifs ?What is the pricing, now that the service is generally available?

Le nombre d’heures d’exécution de votre application vous est facturé, selon les tarifs Azure App Service normaux.You are charged the normal Azure App Service pricing for the number of hours that your app runs.

Autres questionsOther questions

Quels sont les caractères pris en charge dans les noms de paramètres d’application ?What are the supported characters in application settings names?

Vous pouvez utiliser uniquement des lettres (A-Z, a-z), des chiffres (0-9) et le trait de soulignement () comme paramètres d’application.You can use only letters (A-Z, a-z), numbers (0-9), and the underscore character () for application settings.

Où puis-je demander de nouvelles fonctionnalités ?Where can I request new features?

Vous pouvez proposer votre idée sur le Forum de commentaires pour Web Apps.You can submit your idea at the Web Apps feedback forum. Ajoutez « [Linux] » au titre de votre idée.Add "[Linux]" to the title of your idea.

Étapes suivantesNext steps