10 | 环境变量配置提供程序:容器环境下配置注入的最佳途径
适用场景
- 在Docker中运行时
- 在Kubernetes中运行时
- 需要设置ASP.NET Core的一些内置特殊配置时
我们当时一个操作系统会跑多个应用程序,应用程序注入配置的方式一般都是通过文件或者说是命令行的方式来注入的。现在在容器化的环境下面,有了Docker的隔离能力,就意味着每一个应用程序都相当于跑在一个小型的操作系统下面一样,所以说这个时候Docker提供的环境隔离能力,让我们可以使用环境变量来配置我们的引用程序。
特点
- 对于配置的分层键,支持用双下划线“_”代替“:”
- 比如
Linux
下面,冒号作为环境变量的key值时不行的。
- 比如
- 支持根据前缀加载
示例
新建控制台应用程序:右键👉属性👉调试👉环境变量
同样的,这里的配置和launchSettings.json
是一样的
using Microsoft.Extensions.Configuration;
using System;
namespace ConfigurationEnvironmentVariablesDemo
{
class Program
{
static void Main(string[] args)
{
var builder = new ConfigurationBuilder();
builder.AddEnvironmentVariables();
var root = builder.Build();
// input:KEY1 : VALUE1
Console.WriteLine($"KEY1 : {root["KEY1"]}");
}
}
}
上述提到的分层键的问题,这里环境变量定义了一个分层键SECTION
,使用了双下划线分割,这个SECTION
下面有一个KEY2
的key。
对应的代码:
using Microsoft.Extensions.Configuration;
using System;
namespace ConfigurationEnvironmentVariablesDemo
{
class Program
{
static void Main(string[] args)
{
var builder = new ConfigurationBuilder();
builder.AddEnvironmentVariables();
var root = builder.Build();
// input : SECTION_VALUE2
var section = root.GetSection("SECTION");
Console.WriteLine(section["KEY2"]);
}
}
}
多级的分层键也是一样的,和之前一样使用套娃去获取,或者使用以下方式。
在launchSettings.json
中添加SECTION__SECTION2__KEY1": "SECTION__SECTION2__VALUE1
使用var section = root.GetSection("SECTION:SECTION2");
获取,输出:
可以看到获取的时候还是使用的冒号,说明程序会自动的识别双下划线。
前缀过滤
前缀过滤是指我们在注入环境变量的时候,指定一个前缀,意味着我们只注入我们指定前缀的环境变量,而不是把整个操作系统的所有环境变量注入进去
using Microsoft.Extensions.Configuration;
using System;
namespace ConfigurationEnvironmentVariablesDemo
{
class Program
{
static void Main(string[] args)
{
var builder = new ConfigurationBuilder();
builder.AddEnvironmentVariables("T_");
var root = builder.Build();
Console.WriteLine($"T_KEY1 : {root["KEY1"]}");
}
}
}
输出:
本文作者:hiwwwk
本文链接:https://www.cnblogs.com/wwwk/p/15873361.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步