[英]How to override ASP.NET Core connection string with Dockerfile
我正在尝试覆盖位于 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
没有被正确覆盖。
我在这里做错了什么?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.