ホームページ  >  記事  >  バックエンド開発  >  docker compose healthcheck が終了せず、エラーが発生して開始できませんでした

docker compose healthcheck が終了せず、エラーが発生して開始できませんでした

WBOY
WBOY転載
2024-02-06 08:50:03989ブラウズ

docker compose healthcheck 未退出并出现错误无法启动

質問の内容

次の作成ファイルがあります:

リーリー

Dockerfile:

リーリー

docker compose を実行すると、アプリケーションのヘルスチェックが引き続き実行されます。コンテナを起動できませんというエラーでコンテナを終了したいと考えています。

golang コードmain.go

リーリー

ログイン アプリケーションは次のとおりです:

リーリー

docker ps 出力

ああああ

正解


  1. アプリケーションはコンテナ内で実行されていることを知りません。
  2. メイン プロセス (go run main.go) は PID 1 で実行されています。コンテナーを終了するにはプロセスを停止する必要があります。プロセスは保護されています。

これら 2 つの事実を理解すると、いくつかの可能性が考えられます:

  1. コンテナ内に docker cli をインストールします。次に、Docker ソケットをコンテナーにマップし、docker stop を実行します。ソケットをコンテナにマッピングするとセキュリティに影響するため、慎重に作業を進めてください。

  2. 実行 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)

  3. しかし、私の意見では、本当に必要なのは、Kubernetes などのコンテナ オーケストレーション システムです。このアドバイスは、少し大したことかもしれないし、そうでないかもしれません。プロジェクト計画によって異なります。いずれにせよ、実行中のコンテナをより堅牢に管理するのに役立ちます。

エラーを生成する場合は、使用するログ ドライバーによって異なります。 syslog ドライバーを使用して、Docker コンテナーはログを /var/log/syslog に書き込みます。したがって、終了する前に 「エラー テキスト」/var/log/syslog にエコーすることをお勧めします。

以上がdocker compose healthcheck が終了せず、エラーが発生して開始できませんでしたの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。