要在ASP.NET Core 2.1 Docker中覆盖appsettings.json文件,可以使用以下解决方案:
FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /app
# 复制项目文件
COPY . .
# 复制本地的appsettings.json文件到容器中
COPY appsettings.json .
# 构建应用程序
RUN dotnet build -c Release -o out
# 运行应用程序
CMD dotnet run --project /app/out
FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /app
# 复制项目文件
COPY . .
# 设置环境变量
ENV ASPNETCORE_ENVIRONMENT=Development
# 构建应用程序
RUN dotnet build -c Release -o out
# 运行应用程序
CMD dotnet run --project /app/out
在应用程序的Program.cs文件中,使用ConfigurationBuilder来加载appsettings.json文件:
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
config.AddJsonFile($"appsettings.{hostingContext.HostingEnvironment.EnvironmentName}.json", optional: true, reloadOnChange: true);
})
.UseStartup();
这样,在Docker容器中运行应用程序时,将使用Docker中的appsettings.json文件覆盖默认的appsettings.json文件。