У меня есть простое консольное приложение ядра .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 работает нормально, и я получаю изменение в строке плавно.
Так что теперь я пытался запустить его в рамках, для чего я добавил простой файл Docker
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} / Настройки: / app / Настройки myimage
Он немного отличается по синтаксису для использования на машине с Windows (и даже попытался сопоставить / app / out / Settings безуспешно)
Хотелось бы услышать что-нибудь вокруг причин, по которым это "не работает"
Спасибо