在azure devops中:在将docker容器部署到azure时,如何将管道变量作为appsettings注入?
我在azure上部署的docker容器中设置appsettings时遇到问题 我的设置:在azure devops中:在将docker容器部署到azure时,如何将管道变量作为appsettings注入?,azure,docker,.net-core,azure-devops,dockerfile,Azure,Docker,.net Core,Azure Devops,Dockerfile,我在azure上部署的docker容器中设置appsettings时遇到问题 我的设置: 我有一个.NET核心应用程序 我的构建管道构建一个docker映像,并将其推送到azure上的我的容器注册表 我的发布管道根据标签提取图像并将其部署到azure web应用程序 我需要将映像部署到多个环境。每个环境都有不同的应用程序设置。我在管道“变量选项卡”中定义了变量: 我需要将它们发送到我的azure以便可以使用。 当我手动添加它们时,它可以工作,但我想从变量中提取它们,所以我只需要添加一次。(
- 我有一个.NET核心应用程序
- 我的构建管道构建一个docker映像,并将其推送到azure上的我的容器注册表
- 我的发布管道根据标签提取图像并将其部署到azure web应用程序
有没有办法做到这一点?如何提取/列出管道中定义为docker变量或appsettings的变量?您可以在管道中定义管道变量,并将其附加到特定的范围(读取阶段)或发布范围(应用于所有阶段) 例如,我有一个定义为
Environment ConnectionString
的变量,它在两个范围内定义:
- 范围测试:“环境连接字符串=服务器=测试数据库;…”
- 范围QA:“环境连接字符串=服务器=QA db;…”
- 分数发布:“日志记录标志=已启用”
当管道的不同阶段运行时,它们会自动拾取特定于该阶段的值并应用于azure应用程序设置。您可以为不同阶段设置不同的变量组。这些变量组应具有定义为不同值的相同变量 例如:
Dev
变量组和Release
组都有变量Port
,RequestTimeout
。。。开发
中的端口
为4999,而发布
中的端口
可能为5000。我们可以将这些组链接到特定的阶段范围,Dev
阶段的变量组和Release
阶段的group
[![在此处输入图像描述][1][1]
确保所有的阶段都有相同的设置,然后用不同范围的对应值替换具有的变量
更新:
管道中的每个阶段都是独立的,它们代表不同的环境。因此,我们必须逐个定义阶段设置或阶段内任务的设置。我们必须逐个定义appsettings
输入。
[1] :您不应该将配置文件烘焙到容器中。让应用程序从环境变量中读取应用程序设置,并在Azure应用程序设置中定义适当的环境变量。或者使用Azure应用程序配置并在Azure中管理这些值。您所说的“将它们烘焙到容器中”是什么意思。我的问题是如何在发布过程中设置它们,因此我不需要为每个环境设置appsetting-production.json appesting-acceptance.json等。配置值应在Azure web应用中设置并作为环境变量加载,或者,您的应用程序可以配置为直接与Azure Key Vault和Azure App Configuration集成,后者提供了加载和使用应用程序配置的替代方法。您的连续交付管道不是管理应用程序配置的合适位置。那么您建议如何为不同的环境设置应用程序设置?您有多个Azure Web应用程序,对吗?还是临时插槽?您在适当的作用域上设置了应用程序设置,或者维护了多个KeyVault或Azure应用程序配置实例。谢谢,但是是否有其他方法可以自动列出配置设置中定义的所有变量?我不想在每个环境中编辑该列表(参见我的第三个屏幕截图),如果您愿意切换到yaml管道,当然可以。是的,但是我仍然需要定义“应用程序设置”部分中的每个设置和每个变量,对吗?我的问题是,是否有一种方法可以自动提取所有变量。@Enrico希望我的更新能够解决您的难题。如果我能帮上什么忙,请随时告诉我。恐怕我正在寻找更自动化的解决方案。一个接一个地列出所有变量并将它们逐个传递给容器不是我想要的。(参见我的黑十字截图)很抱歉,我的解决方案无法工作,但正如我所知,在devops服务中,没有可用的功能可以直接从我的变量中提取它们。。。也许你可以在我们的用户语音论坛上谈论你想要什么。
- ConnectionString $(EnvironmentConnectionString)
- Logging $(logging_flag)