web-dev-qa-db-fra.com

Déployer Azure Webapp avec des variables d'environnement de conteneur personnalisées

En général, je démarre l'instance de docker sur ma machine locale comme docker run -t -i -e 'a=b' ...

Maintenant, je voudrais déployer et exécuter mon image de docker personnalisée que j'ai téléchargée dans le Docker Container Registry avant et la démarrer comme la commande ci-dessus - avec des variables d'environnement.

En vérifiant Azure CLI pour WebApps , vous pouvez voir que la définition de variables d'environnement en général devrait être possible. Mais pour moi, il semble que ces "variables d'environnement" ne soient pas les variables d'environnement qui sont passées à la commande docker. Pourquoi? Vérification du protocole de conteneur Je peux voir comment le conteneur docker est démarré. Aucune variable d'environnement n'est définie.

Avec Azure Container , cela fonctionnerait comme ceci az container create ... --environment-variables a=b. Ces variables d'environnement sont transmises au conteneur/docker. Et c'est exactement ce que je recherche pour les WebApps.

Quelqu'un a-t-il une certaine expérience du déploiement d'Azure Webapps avec des instances Docker client démarrées avec des variables d'environnement?

10
smichel

Je suppose que j'ai trouvé la solution au problème:

Les paramètres de l'application sont injectés dans votre application en tant que variables d'environnement lors de l'exécution.

Si vous devez définir une variable d'environnement pour votre application, ajoutez simplement un paramètre d'application dans le portail Azure. Lorsque votre application s'exécute, nous injectons automatiquement le paramètre de l'application dans le processus en tant que variable d'environnement.

Comment cela fonctionne via CLI:

az webapp config appsettings set --name <mycontainername> --resource-group <myresourcegroupname> --settings a='b' 

La définition de toutes les variables d'environnement via CLI comme la commande ci-dessus a fonctionné pour moi. La même chose est possible via l'interface utilisateur du portail dans les paramètres de l'application. Si vous vérifiez comment Azure démarre l'instance Docker, vous verrez qu'aucune des variables d'environnement définies n'est définie au démarrage (comme .docker run -d -p 3287:3000 --name <mycontainername -e a=b) mais si vous vous connectez au conteneur Docker et exécutez une commande echo pour la variable d'environnement, vous verrez que la variable d'environnement a été injectée.

Remarque: vous devrez peut-être redémarrer l'instance Docker pour injecter les nouvelles variables d'environnement.

11
smichel