How to fix docker emqx_ctl Node '[email protected]' not responding to pings.
Problem:
When trying to run emqx_ctl in a dockerized emqx setup using a command like
emqx_docker_status.sh
docker-compose exec emqx ./bin/emqx statusyou see an error message like
emqx_node_not_responding.txt
Node '[email protected]' not responding to pings.
/opt/emqx/bin/emqx: line 41: die: command not foundSolution
The problem here is that emqx_ctl is trying to connect to the IP address for node1.emqx.mydomain.com but that IP address does not point to the IP address for the docker container (maybe it’s the public IP address for your server?)
The solution here is to create a network alias within docker/docker-compose so that the Docker DNS system resolves node1.emqx.mydomain.com to the internal IP address of the container.
For example, in docker-compose, you can create your network using
docker_networks_emqx.yml
networks:
emqx:
driver: bridgeand then configure the alias for the container using
docker_compose_emqx_service.yml
services:
emqx:
image: emqx:4.4.4
environment:
- "EMQX_NAME=emqx"
- "EMQX_HOST=node1.emqx.mydomain.com"
- "EMQX_LOADED_PLUGINS=emqx_recon,emqx_retainer,emqx_management,emqx_dashboard"
ports:
- 18083:18083
- 1883:1883
volumes:
- ./emqx_data:/opt/emqx/data
- ./emqx_log:/opt/emqx/log
networks:
emqx:
aliases:
- "node1.emqx.mydomain.com"If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow