HiveBrain v1.2.0
Get Started
← Back to all entries
patterndockerMajor

docker-compose healthcheck for rabbitMQ

Submitted by: @import:stackexchange-devops··
0
Viewed 0 times
rabbitmqdockerhealthcheckforcompose

Problem

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.

> curl -f http://localhost:5672
AMQP    %


But docker-compose ps always says the service is unhealthy (or starting, before it runs out of time).

> 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: ["CMD", "curl", "-f", "http://localhost:5672"]
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: [ "CMD", "nc", "-z", "localhost", "5672" ]


From https://github.com/docker-library/rabbitmq/issues/326

Solution

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

Code Snippets

healthcheck:
  test: rabbitmq-diagnostics -q ping
  interval: 30s
  timeout: 30s
  retries: 3

Context

StackExchange DevOps Q#12092, answer score: 42

Revisions (0)

No revisions yet.