run.sh 2.2 KB

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