Настройки среды на основе приложения ядра .net - docker - PullRequest
0 голосов
/ 02 апреля 2019

Я создал основное веб-приложение .net с 3 различными файлами настроек приложения.

  • appsettings.json
  • appsettings.DEV.json
  • appsettings.PROD.json

У меня есть следующий код в файле 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();
 }

Во время отладки в Visual Studio файл appsettings.js заменяется на основе переменных env (eg: if env=dev -> i got configuration variables from appsettings.DEV.json and if env=prod -> i got configuration variables from appsettings.PROD.json )

Но после докеризации моего приложения это не работает.Для запуска приложения я использовал следующую команду docker.

docker run \
            --detach \
            --restart always \
            --name $name \
            --env ASPNETCORE_ENVIRONMENT=$env \
            --env containerName=$name \
            reponame

Что-нибудь еще нужно для запуска docker?

1 Ответ

0 голосов
/ 02 апреля 2019

Все выглядит хорошо с моей точки зрения, но, пожалуйста, обратите внимание на тот факт, что Linux (если это ваша ОС) чувствительна к регистру.ASP.NET Core соблюдает все принятые соглашения об ОС.

Можете ли вы подтвердить, что --env ASPNETCORE_ENVIRONMENT=$env на самом деле -e ASPNETCORE_ENVIRONMENT=PROD или -e ASPNETCORE_ENVIRONMENT=DEV?

-e ASPNETCORE_ENVIRONMENT=Prod не будет работать,-e ASPNETCORE_ENVIRONMENT=PROD будет работать в вашем случае.

...