tha*_*dam 8 c# docker asp.net-core
我实现了一个 asp.net 核心 API 2.2。我已经创建了一个 docker 镜像。我想覆盖 appsettings.json 文件中的连接字符串。
有什么办法吗?当我使用命令启动容器时,我尝试通过环境变量docker container run -e "ConnectionStrings:DefaultConnection={...here goes the connection string}"
builder.AddEnvironmentVariables();
我的 Startup.cs 中也有,但我的 appsetting.json 中的连接字符串没有被替换。
我在容器内检查了它,appsetting.json 在那里,但值没有被替换。
任何其他方式如何处理这种情况?谢谢。
Tao*_*hou 10
对于-e
,它将覆盖系统环境,这将在您从代码中检索时更改连接字符串,它不会影响appsettings.json
.
例如
假设你有一个appsettings.json
赞
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-TestDockerConfiguration-416C6FD2-3531-42D6-9EDE-18AC45901208;Trusted_Connection=True;MultipleActiveResultSets=true"
},
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*"
}
Run Code Online (Sandbox Code Playgroud)通过_configuration.GetConnectionString("DefaultConnection")
like 检索连接字符串
public class HomeController : Controller
{
private readonly IConfiguration _configuration;
public HomeController(IConfiguration configuration)
{
_configuration = configuration;
}
public IActionResult Index()
{
return Ok(_configuration.GetConnectionString("DefaultConnection"));
//return View();
}
}
Run Code Online (Sandbox Code Playgroud)对于docker run -it -p 8888:80 dockerconfiguration
,它将返回"Server=(localdb)\\mssqllocaldb;Database=aspnet-TestDockerConfiguration-416C6FD2-3531-42D6-9EDE-18AC45901208;Trusted_Connection=True;MultipleActiveResultSets=true"
索引操作
对于docker run -it -p 8888:80 dockerconfiguration -e "ConnectionStrings:DefaultConnection"="testsqlstring"
,它将返回testsqlstring
因此,如果您只想appsettings.json
在运行时覆盖中的值,您只需要像步骤 4 一样指定
如果您更喜欢更改 docker 容器中的 appsettings.json 文件,您可以按照以下步骤操作
vi
命令 apt-get install vim -y
docker exec -it 43ea835776dd /bin/bash
进入容器ls
以列出文件并找到appsettings.json
vi appsettings.json
修改内容cat appsettings.json
检查内容是否有变化exit
并访问Home/Index
以检查结果。appsetting.json 永远不会改变,但是根据层次结构,变量值会被覆盖。查看https://learn.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-2.2#conventions中的示例。它运作得很好。也许只是为了确保您没有因为命令行执行而破坏某些内容,您可以尝试通过 docker-compose 分配环境变量。经验法则是,用于“key”的模式必须与 json 文件中的模式匹配(借助 代替__
):
,这样它就会被覆盖。
归档时间: |
|
查看次数: |
12476 次 |
最近记录: |