通过 docker-compose 发送参数不适用于 .NET6 中的应用程序设置

Sending parameter by docker-compose does not work on appsettings in .NET6

我有一个 docker-compose 与 ConnectionString 的环境变量:

services:
  nameservice:
  ...
  environment:
    ConnectionStrings__mysqlDatabase: "Server=db;Uid=root;Pwd=password;"

我在控制台程序的 .NET 端有一个 AppSettings 文件 (.NET6):

{
  "ConnectionStrings": {
    "mysqlDatabase": "Server=localhost;Uid=root;Pwd=password;"
  }
}

和我的 program.cs :

IConfiguration Config = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
ConnectionStringConstant.mysqlDatabase = Config.GetConnectionString("mysqlDatabase");

我的问题是,在 docker 中创建容器后,它会将值保留在 AppSettings 中(这对生产环境不利)并且不会获取 docker 传递的值-撰写文件。

你能帮帮我吗?

手动构建配置(不使用主机)时需要设置环境变量支持:

var configurationRoot = new ConfigurationBuilder()
    .AddJsonFile("appsettings.json")
    .AddEnvironmentVariables()
    .Build();

阅读更多: