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" ]
The docs mention each stage builds on the previous.
Do you know if you have to chain the commands? or does each command implicitly cover the previous one?
e.g. which do I need for stage 2?
– ConorSheehan1 Aug 13 '20 at 11:20rabbitmq-diagnostics -q ping && rabbitmq-diagnostics -q statusrabbitmq-diagnostics -q statusrabbitmq-diagnostics --formatter=json is_booting | jq --exit-status -n '.result' || rabbitmq-diagnostics -q check_running– Ser Jun 22 '23 at 10:44