【发布时间】:2020-12-22 19:20:25
【问题描述】:
我在 azure 上部署的 docker 容器中设置我的 appsettings 时遇到问题。
我的设置:
- 我有一个 .NET 核心应用程序
- 我的构建管道构建一个 docker 映像并将其推送到我在 azure 上的容器注册表。
- 我的发布管道基于标签拉取图像并将其部署到 Azure Web 应用程序。
我需要将映像部署到多个环境。每个环境都有不同的应用设置。我在管道“变量选项卡”中定义了变量: 我需要将这些发送到我的天蓝色,以便它们可以使用。
当我手动添加它们时,它可以工作,但我想从我的变量中提取它们,所以我只需要添加一次。 (见截图1) 编辑:上面的截图有效。但这不是我要找的。因为每次添加或删除新的应用设置时,我都必须编辑应用设置管道。此外,我相信在此处删除应用设置只会将其保留在已部署的环境中。
我正在部署现有的 docker 映像,因此无法编辑 appsetting.json 文件。我也不会为每个环境制作不同的 docker 文件。
有没有办法做到这一点?如何将管道中定义的变量提取/列出为 docker 变量或 appsettings?
【问题讨论】:
-
您不应该将配置文件烘焙到您的容器中。让您的应用程序从环境变量中读取应用程序设置,并在您的 Azure 应用程序设置中定义适当的环境变量。或者使用 Azure 应用配置并在 Azure 中管理这些值。
-
“将它们放入容器中”是什么意思。我的问题是如何在发布管道期间设置它们,所以我不需要每个环境的 appsetting-production.json appestting-acceptance.json 等。
-
配置值应在您的 Azure Web 应用程序中设置并作为环境变量加载,或者您的应用程序可以配置为直接与 Azure Key Vault 和 Azure 应用程序配置集成,后者提供了另一种加载方法和消耗应用程序配置。您的持续交付管道不是管理应用程序配置的合适位置。
-
那你建议如何为不同的环境设置appsettings?
-
原因是避免将应用程序的配置与持续交付解决方案紧密耦合。您的应用程序应该能够通过任何工具(Azure DevOps、Jenkins、TeamCity、GitHub Actions 或从本地计算机进行测试/调试)来构建和部署。
标签: azure docker .net-core azure-devops dockerfile