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.

  • how to generate core file in docker container?
  • Docker and Django manage.py
  • Web console for docker container
  • ENTRYPOINT with environment variables is not acepting new params
  • How to set up container using Docker Compose to use a static IP and be accessible outside of VM host?
  • Bluemix container failing to network
  • How do I check the output of the test CMD?

  • second ssh session can not connect to docker host
  • Can't delete Docker Image from Registry
  • How to find the CMD command of a docker image?
  • How to overlay a particular folder in one project into the same folder on other projects
  • Can't connect to db docker container
  • How to link docker images to their composing layers on the disk?
  • 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.