Service Fabric service 根据环境变量读取配置文件

阅读目录

  • 配置project环境变量
  • 环境变量可以被override
  • 部署时,选择对应的xml文件

前言

一个服务或者产品,往往需要三个环境:一个开发环境(Development),一个测试环境(Staging),一个生产环境(Production),

这就不可避免的需要多个配置文件来匹配相应的环境,因为不可能三个环境都使用同一个配置,生产的数据直接就被污染了。

为了便于管理所有的配置字符串,把他们集中在一个json文件,程序启动时就序列化出来,有需要更新的时候,直接修改json文件即可,不必修改代码,以免regression或者引入新的bug。

旧方法

把开发的代码部署到测试环境的时候,需要手动merge到测试环境的branch,这个merge过程,需要把修改配置文件;

同理,在测试环境通过好,部署到生产环境时,还要再次手动merge一次到production的branch,之后VSTS部署merge后的branch。

这个过程,繁杂不说,难免出现配置遗漏,错配,或者交接的困难,毕竟谁都有犯迷糊的时候。

Service Fabric service 根据环境变量读取配置文件

根据环境变量自动读取

.Net Core的project,都有一个startup.cs文件,这个文件是服务启动的时候就会执行的过程,所以选在这里把需要的依赖注入,进行初始化:

public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
//Get key vault URL and environment
var appSettings = Configuration.GetSection("AppSettings").Get<appsettings>();
EnvironmentSettings settings = SettingsProvider.Settings(appSettings.KeyVaultURI, appSettings.Environment);
ServiceManager.Initialize(settings);
}
/<appsettings>

这个构造函数的参数env,带有环境变量的值:env.EnvironmentName,根据这个值的不同,在项目里添加三个settings的json文件。

Service Fabric service 根据环境变量读取配置文件

每一个josn里面的结构必须保持一下,这样序列化的时候才能正常解析正确的值。当然,也要符合json的语法,可以使用json校验工具检查一下。


配置project环境变量

.net Core的项目文件,在PackageRoot下,都有一个ServiceManifest.xml文件,把一下代码加入进去,要注意的是环境变量的Name必须是:ASPNETCORE_ENVIRONMENT

否则读取失败。

Service Fabric service 根据环境变量读取配置文件

默认是开发环境(Development)。


环境变量可以被override

在Service fabric下,有个ApplicationManifest.xml

Service Fabric service 根据环境变量读取配置文件

这个文件可以配置对应的参数列表(parameters),添加一列环境变量:

Service Fabric service 根据环境变量读取配置文件

在这个文件的下方,在需要根据环境变量读取配置的project对应节点内,添加环境变量的Name-Value,这里[Environment]的意思是,读取上图中的Environment参数对应的值。

Service Fabric service 根据环境变量读取配置文件


部署时,选择对应的xml文件

在ApplicationParamerters文件夹下,添加对应的参数文件,每个文件的内容就是对应部署环境的配置文件的名称:

Service Fabric service 根据环境变量读取配置文件

Service Fabric service 根据环境变量读取配置文件

Service Fabric service 根据环境变量读取配置文件

Service Fabric service 根据环境变量读取配置文件

publish的时候,选择对应部署环境的xml文件即可:

Service Fabric service 根据环境变量读取配置文件

这样,主要部署的时候,选对了相应的xml文件,程序启动的时候,startup就可以正确读取到对应的配置。

欢迎工作一到五年的Java工程师朋友们加入Java程序员开发: 721575865

群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!


分享到:


相關文章: