次の作成ファイルがあります:
リーリーDockerfile:
リーリーdocker compose を実行すると、アプリケーションのヘルスチェックが引き続き実行されます。コンテナを起動できませんというエラーでコンテナを終了したいと考えています。
golang コードmain.go
ログイン アプリケーションは次のとおりです:
リーリーdocker ps
出力
go run main.go
) は PID 1
で実行されています。コンテナーを終了するにはプロセスを停止する必要があります。プロセスは保護されています。 これら 2 つの事実を理解すると、いくつかの可能性が考えられます:
コンテナ内に docker cli をインストールします。次に、Docker ソケットをコンテナーにマップし、docker stop
を実行します。ソケットをコンテナにマッピングするとセキュリティに影響するため、慎重に作業を進めてください。
実行 ps -afx | コマンド grep が実行されるのを待ちます | awk '{print $1}' | xargs Kill -9
(この回答 を尊重)、つまり特別なものは healthcheck
にあり、curl -f http:// /localhost:8080/ failed health check || (ps -afx | grep go | awk '{ print $1) のように見えるかもしれません}' | xargs Kill -9)
しかし、私の意見では、本当に必要なのは、Kubernetes などのコンテナ オーケストレーション システムです。このアドバイスは、少し大したことかもしれないし、そうでないかもしれません。プロジェクト計画によって異なります。いずれにせよ、実行中のコンテナをより堅牢に管理するのに役立ちます。
エラーを生成する場合は、使用するログ ドライバーによって異なります。 syslog
ドライバーを使用して、Docker コンテナーはログを /var/log/syslog
に書き込みます。したがって、終了する前に 「エラー テキスト」
を /var/log/syslog
にエコーすることをお勧めします。
以上がdocker compose healthcheck が終了せず、エラーが発生して開始できませんでしたの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。