代码之家  ›  专栏  ›  技术社区  ›  Bug

ASP.NET Core Docker环境变量(如果应用迁移)

  •  0
  • Bug  · 技术社区  · 6 年前

    我有一个在Docker中运行的ASP.NET核心应用程序,我需要向容器(在开始时)传递一个bool变量,以确定是否启用该迁移。

    例如:

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
      if(newDB)
        Seed(true);
      else
        Seed(false);
    
     ...
    }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Miq    6 年前

    您可以使用配置变量,该变量的值将在运行时被环境变量重写。

    public Startup(IHostingEnvironment env)
        {
            var builder = new ConfigurationBuilder()
               .SetBasePath(env.ContentRootPath)
               .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
               .AddEnvironmentVariables("APP_");
    
            Configuration = builder.Build();
        }
    
    public IConfigurationRoot Configuration { get; }
    
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
       var newDB = Convert.ToBoolean(Configuration["NewDB"]));
    (...)
    

    appsettings.json:

    {
      "Logging": {
        (..)
       },
      "NewDB": false
    }
    

    当运行container pass时: docker run -e APP_NewDB='true' ...