2017-05-13 29 views
2

我有一個用.Net Core編寫的控制檯應用程序。我將在Docker容器中運行它。我想在停泊命令給出時優雅地停止這個過程,而不是讓這個過程在做某件事的過程中被殺死。有沒有一種方法可以在控制檯應用程序中偵聽此信號?在容器之前,我只需讓控制檯應用程序監聽在控制檯窗口中鍵入的內容即可。如果有一種方法可以讓碼頭工通過標準輸入發送消息,那麼我可以用它來工作,但我對Docker還不夠了解,但知道什麼是可能的。如何在.NET核心可執行文件中監聽來自Docker的信號?

回答

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); 
} 
0

你可以通過一個命令到正在運行的進程中使用docker exec

+0

本文檔展示瞭如何通過Docker發送信號,但是如何讀取.Net核心代碼中的信號? – Eric

相關問題