Como solucionar docker emqx_ctl Node 'emqx@node1.emqx.mydomain.com' not responding to pings.

Problema:

Al trying de run emqx_ctl en un dockerized emqx setup usando un command como

emqx_docker_status.sh
docker-compose exec emqx ./bin/emqx status

ves un error message 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 found

Solucion

El problem here es que emqx_ctl esta trying de connect al IP address para node1.emqx.mydomain.com pero ese IP address no point al IP address para el docker container (maybe es el public IP address para tu server?)

El solution here es create un network alias within docker/docker-compose asi que el Docker DNS system resolves node1.emqx.mydomain.com al internal IP address del container.

Por ejemplo, en docker-compose, puedes create tu network usando

docker_networks_emqx.yml
networks:
  emqx:
    driver: bridge

y luego configure el alias para el 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"

Echa un vistazo a artículos similares por categoría: Container Docker EMQX MQTT