How to view docker-compose healthcheck logs?

Inside my docker-compose.yml, I have the following service healthcheck section. I want to know if MariaDB is actually ready to handle queries. A service named cmd is configured to depend on 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

This healthcheck does not work, shows that the service is unhealthy.

  • I need to run twice docker-compose to not have errors
  • Cannot save a Spark Model with a Dockerized Spark cluster
  • How do I create docker image from an existing CentOS?
  • managing a hierarchy of docker images
  • Host name does not match the certificate subject provided by the peer, but it's a perfect match
  • Docker Network Namespace
  • How do I check the output of the test CMD?

  • How to Copy file to stopped docker container
  • Can't create docker swarm service
  • Rancher server not finding the rancher agent on same server
  • Deployment of multiple instances of Tomcat in single Dockerfile using Supervisor
  • Some questions of Docker -p and Dockerfile
  • How to sandbox Ansible playbooks for high availability Glassfish application on AWS
  • One Solution collect form web for “How to view docker-compose healthcheck logs?”

    You can use :

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

    Output:

    {
      "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"
    

    And look for the output section.

    To get the Output only:

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

    Feel free to swap jq for whatever tool you use for json pretty print.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.