dockerワンタッチでredisクラスタ、shellスクリプトを配置

8821 ワード

                    docker    。redis    。

初心者のパートナーがクラスタ作成の難しさに悩むために、shellスクリプトをわざわざ書いた.自分の腕でも料理は上手ですが、私と同じ料理の仲間もいると信じています...ははははは多くなく直接シナリオに行って大神がもっと最適化することを望んで、最適化したバージョンは分かち合うことができます.わあ、あなたの大神を待っていて、一緒に技術を交流します.
#!/bin/bash
docker rm -f `docker ps --filter name=.*redis-700.* -aq`
echo "1.            "
gml=""
while :
 do
   read path
   if [[ "$path" =~ ^([\/]{1}[a-zA-Z]{1,9}){1,5}$ ]];then
     gml=$path
     break
   else
     echo "$path   linux    "
     echo "           《/path/path1...》"
   fi
 done
rm -rf $path/redis
mkdir $path
cd $gml
echo "2.    redis  "
mkdir redis
cd redis
docker pull redis:5.0.4
echo "3.    redis    "
touch redis-cluster.tmpl
echo -e "port \${PORT}
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 192.168.2.103
cluster-announce-port \${PORT}
cluster-announce-bus-port 1\${PORT}
appendonly yes"
>>redis-cluster.tmpl docker network create redis-net echo "4. " echo "5. redis " for port in `seq 7000 7005` do mkdir -p ./${port}/conf && PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf && mkdir -p ./${port}/data done echo "6.redis " ips="" for port in `seq 7000 7005` do docker run --privileged=true -m 200m -d -p ${port}:${port} -p 1${port}:1${port} -v /${gml}/redis/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf -v /${gml}/redis/${port}/data:/d ata --restart always --name redis-${port} --net redis-net --sysctl net.core.somaxconn=1024 redis:5.0.4 redis-server /usr/local/etc/redis/redis.conf echo "7. redis-$port " ips="$ips`docker inspect redis-${port} --format '{{ (index .NetworkSettings.Networks "redis-net").IPAddress }}'`:${port} " done echo " " docker exec -it redis-7000 bash -c "echo yes | redis-cli --cluster create $ips --cluster-replicas 1 && exit" echo " !!!"

コンテンツをshellの最後にコピーしてlinuxスクリプトを直接実行すればいいです.