【发布时间】:2019-10-15 01:46:03
【问题描述】:
我有一个在 Docker 容器中运行的 ASPNET 核心应用程序。我目前无法启动超过 64 个容器 (initially described here) 我创建的图像。
通过交互式运行容器,我在启动阶段发现了这个错误。
未处理的异常:System.IO.IOException:已达到配置的 inotify 实例数量的用户限制 (128)。
在 System.IO.FileSystemWatcher.StartRaisingEvents() 在 System.IO.FileSystemWatcher.StartRaisingEventsIfNotDisposed() 在 System.IO.FileSystemWatcher.set_EnableRaisingEvents(布尔值) 在 Microsoft.Extensions.FileProviders.Physical.PhysicalFilesWatcher.TryEnableFileSystemWatcher() 在 Microsoft.Extensions.FileProviders.Physical.PhysicalFilesWatcher.CreateFileChangeToken(字符串过滤器) 在 Microsoft.Extensions.FileProviders.PhysicalFileProvider.Watch(字符串过滤器) 在 Microsoft.Extensions.Configuration.FileConfigurationProvider.<.ctor>b__0_0()
在 Microsoft.Extensions.Primitives.ChangeToken.OnChange(Func`1 changeTokenProducer, Action changeTokenConsumer) 在 Microsoft.Extensions.Configuration.FileConfigurationProvider..ctor(FileConfigurationSource 源) 在 Microsoft.Extensions.Configuration.Json.JsonConfigurationSource.Build(IConfigurationBuilder 生成器) 在 Microsoft.Extensions.Configuration.ConfigurationBuilder.Build() 在
Microsoft.AspNetCore.Hosting.WebHostBuilder.BuildCommonServices(AggregateException& hostingStartupErrors) 在 Microsoft.AspNetCore.Hosting.WebHostBuilder.Build() 在 /src/MyProjectName/Program.cs:line 10 中的 MyProjectName.Program.Main(String[] args) 处
Program.cs只有默认内容
1 using Microsoft.AspNetCore;
2 using Microsoft.AspNetCore.Hosting;
3
4 namespace CmcIiiCgiSim
5 {
6 public class Program
7 {
8 public static void Main(string[] args)
9 {
10 CreateWebHostBuilder(args).Build().Run();
11 }
12
13 public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
14 WebHost.CreateDefaultBuilder(args)
15 .UseStartup<Startup>();
16 }
17 }
监视配置更改似乎是 ASP 或任何 ASPNET 核心应用程序的默认设置 (see MS documentation)
我的问题是:如何在 settings 中为 existing 配置文件禁用此选项? 希望这也会禁用文件系统观察程序并消除错误。
我发现了很多示例,这些示例说明了如何以编程方式为其他设置文件完成。但在我的情况下,配置不会改变,我宁愿拥有一个不限于 64 个容器的图像。
【问题讨论】:
-
默认观察的唯一配置是 JSON(
appsettings.json和appsettings.{environment}.json)。包含该配置的方法有一个参数来启用或不启用重新加载。 -
我从这条评论中了解到,在配置中确实有 no 方法可以做到这一点。对吗?
-
你从哪里得到的?将 reload 设置为 false,这会禁用 watcher。
-
怎么样?我在这里完全傻了?
标签: docker configuration-files asp.net-core-2.1 filesystemwatcher