我有一个简单的.net核心控制台应用程序,它只在屏幕上打印一个从设置中读取的字符串
private static void Main(string[] args)
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("Settings/appsettings.json", optional: true, reloadOnChange: true);
var configuration = builder.Build();
while (true)
{
var greeting = configuration.GetSection("MySettings").GetSection("Greeting").Value;
Console.WriteLine(greeting);
}
}
当我在本地运行它时,reloadOnChange可以正常工作,并且可以无缝获取字符串中的更改。
所以现在我试图在一个容器中运行它,为此我添加了一个简单的dockerfile
FROM microsoft/dotnet:2.1-sdk
WORKDIR /app
COPY *.csproj ./
RUN dotnet restore
COPY . ./
RUN dotnet publish -c Release -o out
ENTRYPOINT ["dotnet", "out/DynamicConfig.dll"]
并尝试测试如果我挂载了本地appsettings文件,我会得到reloadOnChange的行为,最初我只是尝试挂载该文件,但是在阅读了一些潜在问题(尽管我认为可以解决)之后,决定将其移动到该设置文件夹。但是,我没有改变
我用来运行它的命令是
docker run -it --rm -v / $ {PWD} / Settings:/ app / Settings myimage
对于Windows机器,它的用法略有不同(甚至尝试映射到/ app / out / Settings都没有运气)
很乐意听到一些无法解决问题的原因
谢谢