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.

  • Docker swarm-manager displays old container information
  • Ansible task timeout max length
  • Submitting a jar to sequenceiq docker-spark container
  • Monitoring Glassfish 4 on Docker with JVisualVM
  • Creating a docker image from an existing enviornment
  • Debug PHP cli application inside docker with PhpStorm
  • How do I check the output of the test CMD?

  • Starting oracle with docker: “TNS:listener: all appropriate instances are blocking new connections” error
  • How to run nodejs inside container correctly?
  • Does Docker EXPOSE make a new layer?
  • Can I use docker to isolate my development environment?
  • Docker container cannot resolve website names, but can ping their ip
  • CoreOS cluster installation alternatives (offline)
  • 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.