如何在.NET核心可执行文件中监听来自Docker的信号?

我有一个用.Net Core编写的控制台应用程序。 我将在Docker容器中运行这个。 我想优雅地停止一个docker stop命令时的进程,而不是让这个进程在做某事的时候被杀死。 有没有一种方法可以在控制台应用程序中侦听此信号? 在容器之前,我只想让控制台应用程序监听在控制台窗口中键入的内容。 如果有一种方法可以让Docker通过标准input发送消息,那么我可以使用这个方法,但是我对Docker还不够了解,但是知道什么是可能的。

毕竟,我的解决scheme最终不会使用控制台应用程序。 我知道,如果我创build一个Web项目,我可以告诉容器什么时候请求closures与网站的启动ApplicationStopping CancellationToken。 因此,不是让容器启动一个长时间运行的控制台应用程序,而只是托pipe一个没有Web内容的网站。 该网站将启动我长时间运行的过程,当容器发送一个信号到网站,它正在closures,我的过程可以优雅地停止。

public void Configure(IApplicationBuilder app , IHostingEnvironment env , IApplicationLifetime applicationLifetime) { applicationLifetime.ApplicationStarted.Register(ApplicationStarted); applicationLifetime.ApplicationStopping.Register(ApplicationStopping); applicationLifetime.ApplicationStopped.Register(ApplicationStopped); } 

您可以使用docker exec将命令传递给Docker容器中正在运行的进程