From 9292e56a26e90a833763dabd92d0c848eecc6685 Mon Sep 17 00:00:00 2001 From: Chayim Date: Wed, 26 Jan 2022 16:51:08 +0200 Subject: [PATCH] cluster script fixes to support future cluster versions and redis unstable (#1900) --- docker/base/Dockerfile.cluster | 4 +++- docker/base/Dockerfile.unstable_cluster | 4 +++- docker/base/Dockerfile.unstable_sentinel | 17 ++++++++++++++ docker/base/create_cluster.sh | 28 +++++++++++++++++++----- 4 files changed, 46 insertions(+), 7 deletions(-) create mode 100644 docker/base/Dockerfile.unstable_sentinel diff --git a/docker/base/Dockerfile.cluster b/docker/base/Dockerfile.cluster index 5d419801fc..5c246dcf28 100644 --- a/docker/base/Dockerfile.cluster +++ b/docker/base/Dockerfile.cluster @@ -6,4 +6,6 @@ RUN chmod +x /create_cluster.sh EXPOSE 16379 16380 16381 16382 16383 16384 -CMD /create_cluster.sh 16379 16384 +ENV START_PORT=16379 +ENV END_PORT=16384 +CMD /create_cluster.sh diff --git a/docker/base/Dockerfile.unstable_cluster b/docker/base/Dockerfile.unstable_cluster index 31e4275d3c..2e3ed55371 100644 --- a/docker/base/Dockerfile.unstable_cluster +++ b/docker/base/Dockerfile.unstable_cluster @@ -6,4 +6,6 @@ RUN chmod +x /create_cluster.sh EXPOSE 6372 6373 6374 6375 6376 6377 -CMD /create_cluster.sh 6372 6377 +ENV START_PORT=6372 +ENV END_PORT=6377 +CMD ["/create_cluster.sh"] diff --git a/docker/base/Dockerfile.unstable_sentinel b/docker/base/Dockerfile.unstable_sentinel new file mode 100644 index 0000000000..fe6d062de8 --- /dev/null +++ b/docker/base/Dockerfile.unstable_sentinel @@ -0,0 +1,17 @@ +# produces redisfab/redis-py-sentinel:unstable +FROM ubuntu:bionic as builder +RUN apt-get update +RUN apt-get upgrade -y +RUN apt-get install -y build-essential git +RUN mkdir /build +WORKDIR /build +RUN git clone https://github.com/redis/redis +WORKDIR /build/redis +RUN make + +FROM ubuntu:bionic as runner +COPY --from=builder /build/redis/src/redis-server /usr/bin/redis-server +COPY --from=builder /build/redis/src/redis-cli /usr/bin/redis-cli +COPY --from=builder /build/redis/src/redis-sentinel /usr/bin/redis-sentinel + +CMD ["redis-sentinel", "/sentinel.conf"] diff --git a/docker/base/create_cluster.sh b/docker/base/create_cluster.sh index 72332944b3..fcb1b1cd8d 100644 --- a/docker/base/create_cluster.sh +++ b/docker/base/create_cluster.sh @@ -1,9 +1,21 @@ #! /bin/bash + mkdir -p /nodes touch /nodes/nodemap -START_NODE=$1 -END_NODE=$2 -for PORT in `seq ${START_NODE} ${END_NODE}`; do +if [ -z ${START_PORT} ]; then + START_PORT=16379 +fi +if [ -z ${END_PORT} ]; then + END_PORT=16384 +fi +if [ ! -z "$3" ]; then + START_PORT=$2 + START_PORT=$3 +fi +echo "STARTING: ${START_PORT}" +echo "ENDING: ${END_PORT}" + +for PORT in `seq ${START_PORT} ${END_PORT}`; do mkdir -p /nodes/$PORT if [[ -e /redis.conf ]]; then cp /redis.conf /nodes/$PORT/redis.conf @@ -17,12 +29,18 @@ daemonize yes logfile /redis.log dir /nodes/$PORT EOF + + set -x redis-server /nodes/$PORT/redis.conf if [ $? -ne 0 ]; then echo "Redis failed to start, exiting." - exit 3 + continue fi echo 127.0.0.1:$PORT >> /nodes/nodemap done -echo yes | redis-cli --cluster create $(seq -f 127.0.0.1:%g ${START_NODE} ${END_NODE}) --cluster-replicas 1 +if [ -z "${REDIS_PASSWORD}" ]; then + echo yes | redis-cli --cluster create `seq -f 127.0.0.1:%g ${START_PORT} ${END_PORT}` --cluster-replicas 1 +else + echo yes | redis-cli -a ${REDIS_PASSWORD} --cluster create `seq -f 127.0.0.1:%g ${START_PORT} ${END_PORT}` --cluster-replicas 1 +fi tail -f /redis.log