如何解决在azure devops中:将docker容器部署到azure时,如何将管道变量作为appsettings注入?
我无法在Azure上已部署的Docker容器中设置我的应用程序设置。
我的设置:
- 我有一个.NET核心应用程序
- 我的构建管道会构建一个docker映像并将其推送到Azure上的我的容器注册表中。
- 我的发布管道根据标签提取图像并将其部署到Azure Web应用程序。
我需要将映像部署到多个环境。每个环境都有不同的设置。我在管道的“变量标签”中定义了变量: 而且我需要将它们发送到我的天蓝色以便可以使用。
当我手动添加它们时,它可以工作,但是我想从变量中提取它们,因此我只需要添加一次即可。 (请参见屏幕截图1) 编辑:以上屏幕截图有效。但这不是我想要的。由于每次添加或删除新的appsetting时都必须编辑appsettings管道。另外,我相信在此处删除应用程序设置只会将其保留在已部署的环境中。
我正在部署现有的Docker映像,因此无法编辑appsetting.json文件。我也不会为每种环境制作不同的docker文件。
有没有办法做到这一点?如何提取/列出管道中定义为docker变量或appsettings的变量?
解决方法
您可以在管道中定义管道变量,并将它们附加到特定的范围(读取阶段)或 release 范围(已应用)所有阶段)。
例如我有一个定义为EnvironmentConnectionString
的变量,它在两个范围内定义:
- 范围测试:“ EnvironmentConnectionString = server = test-db; ....”
- 范围质量检查:“ EnvironmentConnectionString = server = qa-db; ...”
- 分数发布:“ logging_flag =已启用”
然后您可以在“应用程序和配置设置”中进行设置,例如
- ConnectionString $(EnvironmentConnectionString)
- Logging $(logging_flag)
请注意使用$(变量名)语法来使用这些变量
当管道的不同阶段运行时,它们会自动选择特定于该阶段的值并应用于Azure应用设置。
,您可以在不同阶段使用不同的变量组。这些变量组应具有相同变量,并定义为不同的值。
例如:Dev
变量组和Release
组都具有变量Port
,RequestTimeout
... Port
中的Dev
是4999,而Port
中的Release
可能是5000。我们可以将这些组链接到特定的Stage范围,Dev
阶段的Dev
变量组和Release
组进入Release
阶段。
[![在此处输入图片描述] [1]] [1]
确保所有阶段都具有相同的设置,然后将变量替换为不同作用域的对应值。
更新:
管道中的每个阶段都是独立的,它们表示不同的环境。因此,我们必须一一定义阶段的设置或阶段中任务的设置。我们必须一一定义appsettings
输入。
[1]:https://i.stack.imgur.com/ukbjs.png
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。