博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.NET Core开发实战(第10课:环境变量配置提供程序)--学习笔记
阅读量:4031 次
发布时间:2019-05-24

本文共 2359 字,大约阅读时间需要 7 分钟。

10 | 环境变量配置提供程序:容器环境下配置注入的最佳途径

环境变量的配置提供程序主要适应场景:

1、在 Docker 中运行时

2、在 Kubernetes 中运行时

3、需要设置 ASP.NET Core 的一些内置特殊配置时

环境变量和命令行这两个提供程序在早期是没有容器化的,当时一个操作系统会跑多个应用程序,应用程序注入配置的方式一般都是通过文件或者是命令行的方式来注入的,环境变量当时用的比较少

现在在容器化的环境下,有了 Docker 的隔离能力,就意味着每一个应用程序都相当于跑在一个小型的操作系统下面一样,所以说这个时候 Docker 提供的环境隔离能力让我们可以使用环境变量来配置应用程序,在 Docker 和 Kubernetes 中,会大量使用环境变量,而不是使用命令行来配置基础配置

环境变量的配置有如下特点:

1、对于配置的分层键,支持使用双下横线 "__" 代替 ":"

2、支持根据前缀加载

在某些操作系统,比如说 Linux 下面,冒号作为环境变量的 Key 值是不行的,所以说这里支持用双下划线来代替冒号,也就是说当遇到双下划线的环境变量时,可以认为这是一个分层键

环境变量提供程序还支持根据环境变量的前缀来加载

接下来时代码演示

源码链接:

https://github.com/witskeeper/geektime/tree/master/samples/ConfigurationEnvironmentVariablesDemo

首先引入三个包

  • Microsoft.Extensions.Configuration.Abstractions

  • Microsoft.Extensions.Configuration

  • Microsoft.Extensions.Configuration.EnvironmentVariables

然后看一下环境变量如何在调试环境下注入

右键项目,属性,调试,环境变量

同样的在 Properties 下的 launchSettings.json 可以看到配置

{  "profiles": {    "ConfigurationEnvironmentVariablesDemo": {      "commandName": "Project",      "environmentVariables": {        "KEY1": "value1",        "KEY2": "value2",        "SECTION1__KEY3": "value3",        "SECTION1__SECTION2__KEY4": "value4",        "XIAO_KEY1": "xiao key1"      }    }  }}

主程序

namespace ConfigurationEnvironmentVariablesDemo{    class Program    {        static void Main(string[] args)        {            var builder = new ConfigurationBuilder();            builder.AddEnvironmentVariables();            var configurationRoot = builder.Build();            Console.WriteLine($"key1:{configurationRoot["key1"]}");        }    }}

启动程序,输出如下:

key1:value1

分层键

// "SECTION1__KEY3": "value3"// 我们定义了一个分层键 SECTION1,用双下划线隔开,这个 p 下面有一个 KEY3 的 Keyvar p = configurationRoot.GetSection("SECTION1");Console.WriteLine($"KEY3:{p["KEY3"]}");

启动程序,输出如下:

KEY3:value3

多级分层键

// "SECTION1__SECTION2__KEY4": "value4"var p2 = configurationRoot.GetSection("SECTION1:SECTION2");Console.WriteLine($"KEY4:{p2["KEY4"]}");

启动程序,输出如下:

KEY4:value4

前缀过滤:是指在注入环境变量的时候,指定一个前缀,意味着只注入指定前缀的环境变量,而不是把整个操作系统的所有环境变量注入进去

// "XIAO_KEY1": "xiao key1"// build 之后把读取到的环境变量的前缀去掉builder.AddEnvironmentVariables("XIAO_");var configurationRoot = builder.Build();Console.WriteLine($"KEY1:{configurationRoot["KEY1"]}");// "KEY2": "value2"// 在注入的时候,凡是没有 XIAO_ 开头的 Key 都没有注入进来,仅注册进来需要的一个环境变量值// 适合当需要加载特定的值,去掉系统其他值的干扰项的场景使用Console.WriteLine($"KEY2:{configurationRoot["KEY2"]}");

启动程序,输出如下:

KEY1:xiao key1KEY2:value2

转载地址:http://sfwdi.baihongyu.com/

你可能感兴趣的文章
Android计算器实现源码分析
查看>>
Android系统构架
查看>>
Android 跨应用程序访问窗口知识点总结
查看>>
各种排序算法的分析及java实现
查看>>
SSH框架总结(框架分析+环境搭建+实例源码下载)
查看>>
js弹窗插件
查看>>
自定义 select 下拉框 多选插件
查看>>
js判断数组内是否有重复值
查看>>
js获取url链接携带的参数值
查看>>
gdb 调试core dump
查看>>
gdb debug tips
查看>>
arm linux 生成火焰图
查看>>
jtag dump内存数据
查看>>
linux和windows内存布局验证
查看>>
linux config
查看>>
linux insmod error -1 required key invalid
查看>>
linux kconfig配置
查看>>
linux不同模块completion通信
查看>>
linux printf获得时间戳
查看>>
C语言位扩展
查看>>