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

如何在.Net核心可执行文件中侦听来自Docker的信号?,docker,.net-core,Docker,.net Core,我有一个用.NETCore编写的控制台应用程序。我将在Docker容器中运行这个。我想优雅地停止进程时,停泊停止命令,而不是只是让过程被杀死在做某事的中间。是否有一种方法可以从控制台应用程序中监听此信号?在使用容器之前,我只需要让控制台应用程序在控制台窗口中侦听要键入的内容。如果有一种方法可以让docker通过标准输入发送消息,我可以使用它,但我对docker的了解还不够,不知道有什么可能。您可以使用将命令传递给docker容器中正在运行的进程。毕竟,我的解决方案是不使用控制台应用程序。我了解到

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

您可以使用

将命令传递给docker容器中正在运行的进程。毕竟,我的解决方案是不使用控制台应用程序。我了解到,如果我创建了一个web项目,我可以知道容器何时在网站启动时请求关闭ApplicationStopping CancellationToken。因此,与其让容器启动一个长时间运行的控制台应用程序,它将只托管一个没有web内容的网站。网站将启动我的长时间运行的进程,当容器向网站发送它正在关闭的信号时,我的进程可以正常停止

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

本文档说明如何通过Docker发送信号,但如何读取.Net核心代码中的信号?