2017-06-17 5 views
1

Mac用のDockerでNode server containerを使用しています。 node.jsサーバーのメッセージがMacのコンソールに表示されます。macコンソールにechoコマンドでメッセージを送信する方法は? (Docker for Mac)

私のMacコンソールの内部コンテナからbashスクリプトでメッセージを表示するにはどうすればよいですか? シェルスクリプトも実行しています。

healthcheck: test: ["CMD", "bash", "-c", "/xxx/xxxx/healthcheck.sh"] 

感謝を:と私はecho something

マイドッカ - コンはhealthcheck含み、およびエコーがhealthcheck.sh内部で実行されることにより、何かメッセージを表示したいです!

+0

コンテナをどのように始動しましたか? – Henry

+0

私はdocker-composeを使用しています。 だから 'docker-compose up' – Harry

+0

この場合、' stdout'や 'stderr'に書かれたものは、どこから来ても独立してコンソールに行くべきです。コンテナの内部でシェルスクリプトをどのように実行しますか? – Henry

答えて

1

を開始した後、これを行う実行し、ドッキングウィンドウ・コンセットアップにdocker logs -f <container name>

を実行することができますが、その出力はコンテナstdoutに送信されません。ドッカーは、コンテナのメタデータとして、ヘルス・チェック・出力を格納します。

はデバッグ失敗したプローブを支援するために、任意の出力テキストを(UTF-8でエンコード)コマンドは、健康状態に格納される標準出力や標準エラー出力への書き込みとできることドッカーの検査で照会。そのような出力は短く保たれるべきです(最初の4096バイトだけが現在格納されています)。

https://docs.docker.com/engine/reference/builder/#healthcheck

だから、これを使用してその出力を見ることができます:

docker inspect <container-id> 

のようなもののように見える:

 "Health": { 
      "Status": "unhealthy", 
      "FailingStreak": 6, 
      "Log": [ 
       { 
        "Start": "2017-06-17T19:39:33.001296235Z", 
        "End": "2017-06-17T19:39:33.059073965Z", 
        "ExitCode": 1, 
        "Output": "/bin/sh: 1: curl: not found\n" 
       }, 

そして、より具体的に:

docker inspect <container-id> -f '{{index .State.Health.Log 0}}' 
+0

ありがとう!わかった!! – Harry

+0

nice!どういたしまして – Robert

0

stdoutとstderrに書き込まれたすべてのメッセージ(echoを含む)は、コンテナのログに保存されます。

このように、コンテナのログをテールして、発生したメッセージを見ることができます。

単一の容器のために、あなたがechoがドッキングウィンドウhealthcheck内部で実行されるとdocker-compose logs -f <service name>

アプリ

関連する問題