gpt4 book ai didi

c# - 如何使用Dockerfile覆盖ASP.NET Core连接字符串

转载 作者:行者123 更新时间:2023-12-02 21:32:13 24 4
gpt4 key购买 nike

我试图覆盖以下位于ASP.NET Core API上appsettings.json内的连接字符串。

"ConnectionStrings": {
"Connection": "Server=localhost\\SQLEXPRESS;Database=NetCoreSample;User Id=sa;Password=sa;MultipleActiveResultSets=true"
},
为此,我在 AddEnvironmentVariables()中添加了 HostBuilder:
private static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
config.AddEnvironmentVariables();
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
我的 Dockerfile如下:
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env

WORKDIR /src
COPY . ./

ENV CONNECTIONSTRINGS__CONNECTION="Server=sql-server;Database=NetCoreSample;User Id=sa;Password=sa@a2020;MultipleActiveResultSets=true"

WORKDIR /src/Api
RUN dotnet restore
RUN dotnet publish -c Release -o out --no-restore

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1

COPY --from=build-env /src/Api/out .
ENTRYPOINT ["dotnet", "Api.dll"]

EXPOSE 80
请注意,我的API和SQLServer是基于 docker-compose构建的。
但是,当我尝试运行该镜像时,我的API会抛出此错误,该错误与连接字符串有关。
Verify that the instance name is correct and that SQL Server is configured to allow remote connections.
如果我手动覆盖 .json文件上的连接字符串,它就可以正常工作。所以对我来说很明显,我的 ConnectionString没有被正确覆盖。
我在这里做错了什么?

最佳答案

您可以为每种环境使用不同的appsetings.json文件。请参见here示例。
然后,您可以使用ASPNETCORE_ENVIRONMENT使用所需的环境名称运行容器。
对于容器,请使用this:

docker run -e ASPNETCORE_ENVIRONMENT=environment_name ...
您可以看到如何为compos here设置环境变量。

关于c# - 如何使用Dockerfile覆盖ASP.NET Core连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64196957/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com