【问题标题】:How to set environment variables in Dockerized web app in Azure Devops release definition如何在 Azure Devops 发布定义中的 Dockerized Web 应用程序中设置环境变量
【发布时间】:2020-01-31 20:06:06
【问题描述】:

我目前在 Azure DevOps 中有一个构建管道,它使用 Angular Web 应用构建 docker 映像并将其推送到 Azure 容器注册表。我还有一个发布管道,可将该 docker 映像部署到我的 DEV 环境的 Azure 应用服务。 DEV 的环境变量目前被硬编码在配置文件中。

我想设置发布管道,以便它可以使用相同的映像部署到 DEV、TST 和 PRD 环境。对于本地应用程序,我通常只会从构建工件中获取带有标记化变量的配置文件,并使用 ADO 发布任务将标记替换为特定于环境的变量。我认为我不能在这里这样做,因为配置文件现在在构建管道期间与 Docker 映像一起烘焙。关于通常如何处理的任何想法?

【问题讨论】:

  • 嗨,现在怎么样了?哪个答案可以帮助你实现你想要的?只需考虑accept one answer,其他 SO 用户将能够看到该解决方案是否有效。如果您仍然遇到一些问题,请发表评论,以便我们仍然可以为您提供帮助。

标签: docker azure-devops azure-web-app-service azure-pipelines-release-pipeline


【解决方案1】:

应用服务在托管 Windows 容器时具有的一项很酷的功能是应用服务中定义的应用设置和连接字符串将自动注入到 Windows 容器中。

此外,我们支持指定 KeyVault 引用,因此应用服务中的 AppSetting 可以指向 KeyVault,并且平台会在启动容器之前从 KeyVault 中提取机密,然后将其注入。

如果您使用的是 ASP.NET,则应用程序设置和 ConnectionStrings 将填充到 System.Configuration.ConfigurationManager 中

更多信息: https://docs.microsoft.com/en-us/azure/app-service/app-service-web-get-started-windows-container

【讨论】:

    【解决方案2】:

    对于这个问题,是的,打包到 docker 镜像中的配置文件无法修改。作为解决方法,我们经常创建多个配置文件,然后将它们打包到一个图像中。在部署过程中,其逻辑是根据不同的部署环境选择相应的配置文件。

    如果您不想创建多个配置文件,另一种解决方法是运行并行构建作业,其中传入不同的配置变量。然后这些并行构建可以生成多个不同的图像。然后将它们放在一个文件夹中,并在部署时根据不同的环境选择相应的图像。这种方法只需要一个配置文件。但它的缺点是,如果图像非常大,存储这些图像需要更多的空间和时间。

    【讨论】:

      猜你喜欢
      • 2021-07-19
      • 1970-01-01
      • 1970-01-01
      • 2019-10-09
      • 2021-06-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-16
      • 1970-01-01
      相关资源
      最近更新 更多