Problema:
Ao tentar executar emqx_ctl em um setup emqx dockerizado usando um comando como
emqx_docker_status.sh
docker-compose exec emqx ./bin/emqx statusvocê vê uma mensagem de erro como
emqx_node_not_responding.txt
Node 'emqx@node1.emqx.mydomain.com' not responding to pings.
/opt/emqx/bin/emqx: line 41: die: command not foundSolução
O problema aqui é que emqx_ctl está tentando conectar ao endereço IP para node1.emqx.mydomain.com mas esse endereço IP não aponta para o endereço IP do container docker (talvez seja o endereço IP público do seu servidor?)
A solução aqui é criar um alias de rede dentro do docker/docker-compose para que o sistema DNS do Docker resolva node1.emqx.mydomain.com para o endereço IP interno do container.
Por exemplo, no docker-compose, você pode criar sua rede usando
docker_networks_emqx.yml
networks:
emqx:
driver: bridgee então configurar o alias para o container usando
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