run.sh 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #!/bin/bash
  2. function usage() {
  3. echo "Usage:"
  4. echo " run.sh [CONFIG]"
  5. echo "example 1 :"
  6. echo " run.sh -e canal.instance.master.address=127.0.0.1:3306 \\"
  7. echo " -e canal.instance.dbUsername=canal \\"
  8. echo " -e canal.instance.dbPassword=canal \\"
  9. echo " -e canal.instance.connectionCharset=UTF-8 \\"
  10. echo " -e canal.instance.tsdb.enable=true \\"
  11. echo " -e canal.instance.gtidon=false \\"
  12. echo " -e canal.instance.filter.regex=.*\\\\\\..* "
  13. echo "example 2 :"
  14. echo " run.sh -e canal.admin.manager=127.0.0.1:8089 \\"
  15. echo " -e canal.admin.port=11110 \\"
  16. echo " -e canal.admin.user=admin \\"
  17. echo " -e canal.admin.passwd=4ACFE3202A5FF5CF467898FC58AAB1D615029441"
  18. exit
  19. }
  20. function check_port() {
  21. local port=$1
  22. local TL=$(which telnet)
  23. if [ -f $TL ]; then
  24. data=`echo quit | telnet 127.0.0.1 $port| grep -ic connected`
  25. echo $data
  26. return
  27. fi
  28. local NC=$(which nc)
  29. if [ -f $NC ]; then
  30. data=`nc -z -w 1 127.0.0.1 $port | grep -ic succeeded`
  31. echo $data
  32. return
  33. fi
  34. echo "0"
  35. return
  36. }
  37. function getMyIp() {
  38. case "`uname`" in
  39. Darwin)
  40. myip=`echo "show State:/Network/Global/IPv4" | scutil | grep PrimaryInterface | awk '{print $3}' | xargs ifconfig | grep inet | grep -v inet6 | awk '{print $2}'`
  41. ;;
  42. *)
  43. myip=`ip route get 1 | awk '{print $NF;exit}'`
  44. ;;
  45. esac
  46. echo $myip
  47. }
  48. CONFIG=${@:1}
  49. #VOLUMNS="-v $DATA:/home/admin/canal-server/logs"
  50. PORTLIST="11110 11111 11112 9100"
  51. PORTS=""
  52. for PORT in $PORTLIST ; do
  53. #exist=`check_port $PORT`
  54. exist="0"
  55. if [ "$exist" == "0" ]; then
  56. PORTS="$PORTS -p $PORT:$PORT"
  57. else
  58. echo "port $PORT is used , pls check"
  59. exit 1
  60. fi
  61. done
  62. NET_MODE=""
  63. case "`uname`" in
  64. Darwin)
  65. bin_abs_path=`cd $(dirname $0); pwd`
  66. ;;
  67. Linux)
  68. bin_abs_path=$(readlink -f $(dirname $0))
  69. NET_MODE="--net=host"
  70. PORTS=""
  71. ;;
  72. *)
  73. bin_abs_path=`cd $(dirname $0); pwd`
  74. NET_MODE="--net=host"
  75. PORTS=""
  76. ;;
  77. esac
  78. BASE=${bin_abs_path}
  79. DATA="$BASE/data"
  80. mkdir -p $DATA
  81. if [ $# -eq 0 ]; then
  82. usage
  83. elif [ "$1" == "-h" ] ; then
  84. usage
  85. elif [ "$1" == "help" ] ; then
  86. usage
  87. fi
  88. MEMORY="-m 4096m"
  89. LOCALHOST=`getMyIp`
  90. cmd="docker run -d -it -h $LOCALHOST $CONFIG --name=canal-server $VOLUMNS $NET_MODE $PORTS $MEMORY canal/canal-server"
  91. echo $cmd
  92. eval $cmd