Jak opravit docker emqx_ctl Node 'emqx@node1.emqx.mydomain.com' not responding to pings.

Problém:

Při pokusu o spuštění emqx_ctl v dockerized emqx setup pomocí příkazu jako

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

uvidíte error message jako

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

Řešení

Problém zde je, že emqx_ctl se pokouší připojit k IP adrese pro node1.emqx.mydomain.com, ale ta IP adresa neukazuje na IP adresu pro docker container (možná je to public IP adresa pro váš server?)

Řešení zde je vytvořit network alias v rámci docker/docker-compose, aby Docker DNS system resolved node1.emqx.mydomain.com na internal IP adresu containeru.

Například, v docker-compose, můžete vytvořit váš network pomocí

docker_networks_emqx.yml
networks:
  emqx:
    driver: bridge

a pak konfigurovat alias pro container pomocí

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"

Podívejte se na podobné články podle kategorie: Container Docker EMQX MQTT