如何在.Net Core Executable中侦听来自Docker的信号?

时间:2017-05-13 00:13:47

标签: docker .net-core

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

2 个答案:

答案 0 :(得分:1)

毕竟,我的解决方案最终是不使用控制台应用程序。我了解到,如果我创建一个Web项目,我可以告诉容器何时通过网站的Startup中的ApplicationStopping CancellationToken请求关闭。因此,它不是让容器启动一个长时间运行的控制台应用程序,而是只托管一个没有Web内容的网站。该网站将启动我长时间运行的过程,当容器向网站发出关闭它的信号时,我的进程可以正常停止。

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

答案 1 :(得分:0)

您可以使用docker exec

将命令传递到Docker容器中正在运行的进程
相关问题