docker-compose healthcheck for rabbitMQ I'm trying to run rabbitMQ using docker-compose, but the service is always starting or unhealthy.
rabbit is running fine, so I suspect there is something wrong with my health check.
Running the healthcheck command locally does return a value.
&gt; curl -f http://localhost:5672
AMQP    %

But docker-compose ps always says the service is unhealthy (or starting, before it runs out of time).
&gt; docker-compose ps
docker-entrypoint.sh rabbi ...   Up (unhealthy)   15671/tcp

Here is what my docker-compose.yml file looks like.
# docker-compose.yml
version: '2.3' # note: I can't change this version, must be 2.3

volumes:
  rabbit-data:

services:
  rabbit:
    hostname: 'rabbit'
    image: rabbitmq:3.8.5-management
    healthcheck:
      test: [&quot;CMD&quot;, &quot;curl&quot;, &quot;-f&quot;, &quot;http://localhost:5672&quot;]
      interval: 30s
      timeout: 30s
      retries: 3
    ports:
      - '5672:5672'
      - '15672:15672'
    volumes:
      - 'rabbit-data:/var/lib/rabbitmq/mnesia/'
    networks:
      - rabbitmq

networks:
  rabbitmq:
    driver: bridge

I have also tried using nc instead of curl in the healthcheck, but got the same result.
healthcheck:
  test: [ &quot;CMD&quot;, &quot;nc&quot;, &quot;-z&quot;, &quot;localhost&quot;, &quot;5672&quot; ]

From https://github.com/docker-library/rabbitmq/issues/326
You could use the command rabbitmq-diagnostics -q ping in case you just need a basic check.
healthcheck:
  test: rabbitmq-diagnostics -q ping
  interval: 30s
  timeout: 30s
  retries: 3

More information on how to run more advanced health checks could be found here