2017-05-13 7 views
2

私は、.Netコアで書かれたコンソールアプリケーションを持っています。私はこれをDockerコンテナで実行します。ドッカーの停止コマンドが与えられたときにプロセスを正常に停止したいのですが、何かの途中でプロセスが強制終了されるのを防ぐだけです。コンソールアプリケーションからこの信号を聞くことができる方法はありますか?コンテナの前に、私はコンソールアプリケーションがコンソールウィンドウに入力される何かを聞くようにするだけです。ドッカーが標準入力でメッセージを送信する方法があれば、私はそれを使って作業することができますが、ドッカーについてはまだ分かりません。.Net Core ExecutableのDockerから信号を受信するにはどうしたらいいですか?

答えて

1

使用ドッカーコンテナ内で実行中のプロセスにコマンドを渡すことができます。 Webプロジェクトを作成すると、WebサイトのスタートアップでApplicationStopping CancellationTokenを使用してコンテナがシャットダウンを要求したことがわかります。したがって、コンテナを長時間実行するコンソールアプリケーションを起動させるのではなく、Webコンテンツを持たない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 Coreコードで信号を読み取るにはどうすればよいですか? – Eric

関連する問題