docker-compose ヘルスチェックログを表示するにはどうすればいいですか? 質問する

docker-compose ヘルスチェックログを表示するにはどうすればいいですか? 質問する

私の 内にはdocker-compose.yml、次のservice healthcheckセクションがあります。MariaDB が実際にクエリを処理する準備ができているかどうかを知りたいのです。service名前付きcmdは に依存するように設定されていますcondition: service_healthy

  db:
    image: mariadb:10
    environment:
      MYSQL_RANDOM_ROOT_PASSWORD: 1
      MYSQL_USER: user
      MYSQL_PASSWORD: password
      MYSQL_DATABASE: database
    healthcheck:
      test: ["CMD", "mysql", "--user=user", "--password=password", "--execute='SELECT 1'", "--host=127.0.0.1", "--port=3306"]
      interval: 1s
      retries: 30

このヘルスチェックは機能せず、サービスが正常でないことを示しています。

CMDの出力を確認するにはどうすればよいですかtest?

ベストアンサー1

以下を使用できます:

docker inspect --format "{{json .State.Health }}" <container name> | jq

出力:

{
    "Status": "unhealthy",
    "FailingStreak": 63,
    "Log": [
        {
            "Start": "2017-03-11T20:49:19.668895201+03:30",
            "End": "2017-03-11T20:49:19.735722044+03:30",
            "ExitCode": 1,
            "Output": "ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''SELECT 1'' at line 1\n"
        }
    ]
}

そして、出力セクション。

出力のみを取得するには:

docker inspect --format "{{json .State.Health }}" mariadb_db_1 | jq '.Log[].Output'

スウォーム モードの場合は、次の形式を使用します (@shotgunner さん、指摘していただきありがとうございます)。

{{json.Spec.TaskTemplate.ContainerSpec.Healthcheck}}

jqjson のきれいな印刷に使用するツールであれば自由に交換できます。

おすすめ記事