使用自定义容器环境变量部署Azure Webapp

smi*_*hel 11 azure acs docker azure-web-app-service

一般来说,我会在本地机器上启动docker实例 docker run -t -i -e 'a=b' ...

现在,我想部署并运行我之前上传到Docker Container Registry的自定义docker镜像,并像上面的命令一样启动它 - 使用环境变量.

检查Azure CLI for WebApps,您可以看到通常应该可以设置环境变量.但对我来说,似乎这个"环境变量"不是传递给docker命令的环境变量.为什么?检查容器协议我可以看到docker容器是如何启动的.没有设置环境变量.

使用Azure容器,它会像这样工作az container create ... --environment-variables a=b.这些环境变量传递给容器/ docker.这正是我在寻找WebApps的原因.

有没有人在使用环境变量启动的客户Docker实例部署Azure Webapps方面有一些经验?

smi*_*hel 13

我想我找到了问题的解决方案:

应用程序设置在运行时作为环境变量注入您的应用程序.

如果需要为应用程序设置环境变量,只需在Azure门户中添加应用程序设置即可.当您的应用运行时,我们会自动将应用设置作为环境变量注入流程.

如何通过CLI工作:

az webapp config appsettings set --name <mycontainername> --resource-group <myresourcegroupname> --settings a='b' 
Run Code Online (Sandbox Code Playgroud)

通过CLI设置所有环境变量,就像上面的命令一样.在应用程序设置中通过门户UI可以实现相同的功能.如果您检查Azure如何启动Docker实例,您将看到在启动期间没有设置任何设置环境变量(如.docker run -d -p 3287:3000 --name <mycontainername -e a=b)但是如果您登录到Docker容器并运行echo环境变量的命令,您将看到环境变量已被注入.

注意:可能必须重新启动Docker实例才能注入新的环境变量.

  • 这让我完全把头发拉了出来。当我通过 ssh 进入正在运行的容器和 `printenv` 时,appsettings 不可见。但它们似乎对容器入口点可用。我最终在入口点添加了一个 `echo $TEST &gt; test.txt`。虽然它们不是立即可用的。容器重启了几次。 (4认同)
  • 这对我来说通过 Web UI 不起作用。 (3认同)