summaryrefslogtreecommitdiff
path: root/docker
diff options
context:
space:
mode:
Diffstat (limited to 'docker')
-rw-r--r--docker/base/Dockerfile.cluster8
-rw-r--r--docker/base/create_cluster.sh26
-rw-r--r--docker/cluster/redis.conf3
3 files changed, 37 insertions, 0 deletions
diff --git a/docker/base/Dockerfile.cluster b/docker/base/Dockerfile.cluster
new file mode 100644
index 0000000..70e8013
--- /dev/null
+++ b/docker/base/Dockerfile.cluster
@@ -0,0 +1,8 @@
+FROM redis:6.2.6-buster
+
+COPY create_cluster.sh /create_cluster.sh
+RUN chmod +x /create_cluster.sh
+
+EXPOSE 16379 16380 16381 16382 16383 16384
+
+CMD [ "/create_cluster.sh"] \ No newline at end of file
diff --git a/docker/base/create_cluster.sh b/docker/base/create_cluster.sh
new file mode 100644
index 0000000..82a79c8
--- /dev/null
+++ b/docker/base/create_cluster.sh
@@ -0,0 +1,26 @@
+#! /bin/bash
+mkdir -p /nodes
+touch /nodes/nodemap
+for PORT in $(seq 16379 16384); do
+ mkdir -p /nodes/$PORT
+ if [[ -e /redis.conf ]]; then
+ cp /redis.conf /nodes/$PORT/redis.conf
+ else
+ touch /nodes/$PORT/redis.conf
+ fi
+ cat << EOF >> /nodes/$PORT/redis.conf
+port ${PORT}
+cluster-enabled yes
+daemonize yes
+logfile /redis.log
+dir /nodes/$PORT
+EOF
+ redis-server /nodes/$PORT/redis.conf
+ if [ $? -ne 0 ]; then
+ echo "Redis failed to start, exiting."
+ exit 3
+ fi
+ echo 127.0.0.1:$PORT >> /nodes/nodemap
+done
+echo yes | redis-cli --cluster create $(seq -f 127.0.0.1:%g 16379 16384) --cluster-replicas 1
+tail -f /redis.log
diff --git a/docker/cluster/redis.conf b/docker/cluster/redis.conf
new file mode 100644
index 0000000..dff658c
--- /dev/null
+++ b/docker/cluster/redis.conf
@@ -0,0 +1,3 @@
+# Redis Cluster config file will be shared across all nodes.
+# Do not change the following configurations that are already set:
+# port, cluster-enabled, daemonize, logfile, dir