diff --git a/.gitlab/ci/custom.images.yml b/.gitlab/ci/custom.images.yml index 200c46b..1cf2009 100644 --- a/.gitlab/ci/custom.images.yml +++ b/.gitlab/ci/custom.images.yml @@ -73,3 +73,6 @@ postgres-14-pgvector-0.4.1: postgres-15-pgvector-0.4.1: extends: .build_static_image + +redis-cluster-6.2.12: + extends: .build_static_image diff --git a/Dockerfile.redis-cluster-6.2.12 b/Dockerfile.redis-cluster-6.2.12 new file mode 100644 index 0000000..fecf92f --- /dev/null +++ b/Dockerfile.redis-cluster-6.2.12 @@ -0,0 +1,11 @@ +FROM redis:6.2.12 + +ENV HOME /root + +COPY scripts/run-redis-cluster /docker-entrypoint.sh + +RUN chmod 755 /docker-entrypoint.sh + +EXPOSE 7001 7002 7003 + +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/scripts/run-redis-cluster b/scripts/run-redis-cluster new file mode 100755 index 0000000..d387578 --- /dev/null +++ b/scripts/run-redis-cluster @@ -0,0 +1,24 @@ +#!/bin/bash + +# Approach references https://docs.docker.com/config/containers/multi-service_container/#use-a-wrapper-script +# This script starts 3 Redis server process in the background and syncs them after a short wait. + +start_redis_server() { + redis-server --port $1\ + --cluster-enabled yes \ + --cluster-node-timeout 5000 \ + --bind 127.0.0.1 \ + --cluster-config-file "$2" & +} + +start_redis_server 7001 nodes-1.conf +start_redis_server 7002 nodes-2.conf +start_redis_server 7003 nodes-3.conf + +sleep 3 + +redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 --cluster-yes + +wait -n + +exit $?