Azure-docs: 在Azure容器注册表中具有自定义Docker映像的Web App-环境变量

创建于 2018-05-11  ·  20评论  ·  资料来源: MicrosoftDocs/azure-docs

我很难找到可以在其中设置docker run传递给我的自定义docker映像的自定义环境变量的位置。 我的映像从这些环境变量读取配置。


文件详细资料

请勿编辑此部分。

Pri1 app-servicsvc cxp in-progress product-question triaged

最有用的评论

同样的问题在这里。 现在,我只想说:愚蠢的天蓝色!

所有20条评论

@timmydo感谢您的反馈。 我们正在积极调查,并将尽快与您联系。

@timmydo-我今天将对此进行调查,并分享所有相关发现。 只是为了澄清一下,在将自定义映像上传到Azure容器注册表之前,是否不使用ENVDockerfile设置环境变量? 另外,如果您还没有看到以下文档,请查看它们:

在容器实例中设置环境变量
https://docs.microsoft.com/zh-CN/azure/container-instances/container-instances-using-azure-container-registry
从Azure容器注册表部署到Azure容器实例
https://docs.microsoft.com/zh-CN/azure/container-instances/container-instances-environment-variables

感谢您的链接。 我认为它们可能更适合独立运行容器。 在我的场景中,我正在Web应用程序服务内运行一个容器,因此无法使用其中一些命令。 (我猜想Web应用程序服务会启动我的容器并将HTTP请求转发到其上的端口80)

我没有在dockerfile中设置env vars,因为我的dockerfile已签入公共git存储库,并且我不想在其中放置秘密。 我想我可以通过使用环境变量创建另一个秘密dockerfile来解决该问题,但是将其放入azure门户(也许在azure Web应用程序设置部分中)会更方便。

@timmydo是的,在公开回购中绝对不理想。 因此,通过应用程序设置定义的配置值(键,值对)将在应用程序运行时environment变量的形式提供给您的应用程序,而不是在部署期间。 您可以在Dockerfile使用Azure Key Vault服务来获取配置值,但是您仍需要在Dockerfile中公开tenant_idsubscription_id等(除非您可以选择将它们定义为单独的env文件,该文件不会签入您的仓库中。

如此说来,请查看以下文档,其中讨论了使用VSTS定义自定义部署(构建过程)到Web App for Containers:

为什么使用单独的发行版定义而不是Web App for Containers中可用的自动部署功能?
https://docs.microsoft.com/zh-cn/vsts/build-release/apps/cd/deploy-docker-webapp?view=vsts

该文档链接到一个文档,该文档告诉您如何使用VSTS构建容器,但是该文档解释了如何使用VSTS步骤构建容器,却没有提及有关处理机密/环境变量的任何内容。 用于构建docker映像的VSTS任务需要将dockerfile检入到存储库中。

在运行docker build步骤之前,我可能有一个内嵌的powershell脚本在某处生成dockerfile,但这似乎是一种hack。 我认为这主要是码头工人的错

也许替代方法是在azure门户的Web应用程序中使用kubernetes pod yaml定义来定义环境变量,但是我找不到关于它的任何好文档。 似乎不适合放置配置,因为我认为这些pod定义在源代码管理中更有意义。

谁是提出功能请求以允许将env vars传递给Azure门户中的docker run命令的合适人选?

@neilpeterson会对此有任何见解吗? 我知道从技术上讲它是一个Web应用程序文档,但它涉及到容器,因此认为可能值得一问

我本人未使用过Web应用程序,但是快速扫描文档显示,使用CLI时可以使用--settings

--settings WEBSITES_PORT=8000

在门户网站上,我看不到实现这一目标的非常直接的方法。 正如@timmydo指出的那样,看起来我们可以使用Docker Compose或Kubernetes清单文件,两者都可以解决问题。

因此,这样的撰写文件应该可以工作(我已经确认)。

version: '3'
services:
  demo-env:
    image: microsoft/sample-aks-helloworld
    container_name: aks-helloworld
    environment:
      TITLE: test-environment-var

就是说,我还希望有一些更基本的东西,类似于--settings CLI参数。

@ SyntaxC4和对此有何想法?

@timmydo我们使用azure cli设置了应用程序设置变量来解决了这个问题。 所有这些变量最终都在已启动的docker cmd / entrypoint的环境中。 例如
az webapp config appsettings set --name webapp-name --resource-group dev --settings DB_NAME = dbname DB_HOST = ourhost.database.windows.net DB_USER = dbuser DB_PASSWD = passwd WEBSITES_ENABLE_APP_SERVICE_STORAGE = true

因此,至少它们不在源代码控制中。

@saschwarz我不认为azure应用程序设置会传递给容器Web应用程序的docker run命令中的-e选项吗?

@timmydo也许我们正在谈论在Azure中运行Docker容器的不同方法? 在容器的WebApps中,我不会发出docker run 。 我将图像推送到我们的私有Azure注册表中,在带有门户的WebApp实例中选择标记(或通过Azure cli),并使用注入到环境中的应用程序设置来部署/运行它:

https://blogs.msdn.microsoft.com/waws/2017/09/08/things-you-should-know-web-apps-and-linux/#SetEnvVar

@timmydo请在Azure反馈站点上提交功能请求,以便社区可以对该功能进行投票,并且我们的产品团队可以进行审核以供将来实施。

现在,我们将关闭该线程。 如果对此问题还有其他疑问,请重新打开它,我们将继续讨论。

这个主题正是我过去几天一直在搜索的内容。 最后,我对stackoverflow提出了一个问题(https://stackoverflow.com/questions/50681821/deploy-azure-webapp-with-custom-container-environment-variables),以得到我的问题的答案。
我的解决方法还使用了docker-compose文件,但是使用docker-compose还无法使用ACR图像。

同样的问题在这里。 现在,我只想说:愚蠢的天蓝色!

嗨,大家好,

关于此主题的任何解决方法?,我们在2019年面临相同的问题,同时试图通过App Service,Web App for Container或Azure中的简单Containers将环境变量(参数)传递给我的私有Docker映像...它总是相同的失败输出

在应用程序服务的sectuon设置中的“配置”标签下使用应用程序设置。 每个应用程序设置都作为env变量传递到容器。

我们仍然看到一个问题,即从ACR中拉出的容器中的.nercore应用无法从Azure门户中的应用服务中获取应用设置。 正如文档所建议的,这些值不会在运行时自动注入。

我觉得能够将环境变量添加到docker run命令是一个非常基本且必不可少的功能。

我不感到惊讶,Azure再次将琐碎的事情变成了一个问题,这使我花了很长时间才能解决。

我们使用应用程序设置将变量注入自定义docker映像和docker compose应用程序已有5个月了,没有任何问题...

当我尾随我的容器的log stream时,我可以看到为旋转容器而运行的实际命令。 虽然它确实包含以下ENV_VARS ,但仍缺少我设置为应用程序设置的那些设置。

docker run -d -p 7312:80 --name container_name -e WEBSITES_ENABLE_APP_SERVICE_STORAGE=false -e WEBSITE_SITE_NAME=appservice-name -e WEBSITE_AUTH_ENABLED=False -e PORT=80 -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=appservice-name.azurewebsites.net -e WEBSITE_INSTANCE_ID=INSTANCE_ID -e HTTP_LOGGING_ENABLED=1 repo.azurecr.io/container:tag

似乎环境变量是在入口点运行时注入的,但之后便无法访问了。 太烦人了。

部署后遇到相同的问题,无法使其重新联机。 产量下降了5个小时

此页面是否有帮助?
0 / 5 - 0 等级