Problème :
En essayant d’exécuter emqx_ctl dans une configuration emqx dockerisée en utilisant une commande comme
emqx_docker_status.sh
docker-compose exec emqx ./bin/emqx statusvous voyez un message d’erreur comme
emqx_node_not_responding.txt
Node 'emqx@node1.emqx.mydomain.com' not responding to pings.
/opt/emqx/bin/emqx: line 41: die: command not foundSolution
Le problème ici est que emqx_ctl essaie de se connecter à l’adresse IP pour node1.emqx.mydomain.com mais cette adresse IP ne pointe pas vers l’adresse IP du conteneur docker (peut-être que c’est l’adresse IP publique de votre serveur ?)
La solution ici est de créer un alias réseau dans docker/docker-compose pour que le système DNS de Docker résolve node1.emqx.mydomain.com vers l’adresse IP interne du conteneur.
Par exemple, dans docker-compose, vous pouvez créer votre réseau en utilisant
docker_networks_emqx.yml
networks:
emqx:
driver: bridgeet puis configurer l’alias pour le conteneur en utilisant
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"Si cet article vous a aidé, pensez à m'offrir un café ou à faire un don via PayPal pour soutenir la recherche et la publication de nouveaux articles sur TechOverflow