如何在.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容器中正在运行的进程
- 使用Docker自定义Visual Studio运行configuration
- 使用Windows身份validation将在Linux容器中运行的.NET API与在VM中运行的SQL Server连接起来
- 将.NET Core控制台应用程序构build到Docker中
- 我应该使用docker的用户机密或环境variables
- DotNet构buildCLI在terminal中工作,但不在Docker构build中
- 鉴于下面描述的错误,人们如何在Ubuntu / Docker的ASP.NET Core Web API中进行身份validation?
- 将.net核心应用程序部署到docker会给“Microsoft.DotNet.Props”找不到错误
- 连接到Docker Container .Net Core
- Docker组成 – 在VSTS上