docker-entrypoint.sh 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #!/usr/bin/env bash
  2. ## EMQ docker image start script
  3. # Huang Rui <vowstar@gmail.com>
  4. # EMQX Team <support@emqx.io>
  5. ## Shell setting
  6. if [[ -n "$DEBUG" ]]; then
  7. set -ex
  8. else
  9. set -e
  10. fi
  11. shopt -s nullglob
  12. ## Local IP address setting
  13. LOCAL_IP=$(hostname -i | grep -oE '((25[0-5]|(2[0-4]|1[0-9]|[1-9]|)[0-9])\.){3}(25[0-5]|(2[0-4]|1[0-9]|[1-9]|)[0-9])' | head -n 1)
  14. if [[ -z "$EMQX_NODE_NAME" ]]; then
  15. EMQX_NAME="${EMQX_NAME:-emqx}"
  16. if [[ -z "$EMQX_HOST" ]]; then
  17. if [[ "$EMQX_CLUSTER__K8S__ADDRESS_TYPE" == "dns" ]] && [[ -n "$EMQX_CLUSTER__K8S__NAMESPACE" ]]; then
  18. EMQX_CLUSTER__K8S__SUFFIX=${EMQX_CLUSTER__K8S__SUFFIX:-"pod.cluster.local"}
  19. EMQX_HOST="${LOCAL_IP//./-}.$EMQX_CLUSTER__K8S__NAMESPACE.$EMQX_CLUSTER__K8S__SUFFIX"
  20. elif [[ "$EMQX_CLUSTER__K8S__ADDRESS_TYPE" == 'hostname' ]] && [[ -n "$EMQX_CLUSTER__K8S__NAMESPACE" ]]; then
  21. EMQX_CLUSTER__K8S__SUFFIX=${EMQX_CLUSTER__K8S__SUFFIX:-'svc.cluster.local'}
  22. EMQX_HOST=$(grep -h "^$LOCAL_IP" /etc/hosts | grep -o "$(hostname).*.$EMQX_CLUSTER__K8S__NAMESPACE.$EMQX_CLUSTER__K8S__SUFFIX")
  23. else
  24. EMQX_HOST="$LOCAL_IP"
  25. fi
  26. fi
  27. export EMQX_NODE_NAME="$EMQX_NAME@$EMQX_HOST"
  28. unset EMQX_NAME
  29. unset EMQX_HOST
  30. fi
  31. # The default rpc port discovery 'stateless' is mostly for clusters
  32. # having static node names. So it's troulbe-free for multiple emqx nodes
  33. # running on the same host.
  34. # When start emqx in docker, it's mostly one emqx node in one container
  35. export EMQX_RPC__PORT_DISCOVERY="${EMQX_RPC__PORT_DISCOVERY:-manual}"
  36. exec "$@"