Skip to content

Instantly share code, notes, and snippets.

@berttejeda
Forked from thelinuxlich/docker-compose.yml
Last active March 12, 2021 20:50
Show Gist options
  • Save berttejeda/976252487c6ec231a56a83de9a4beee9 to your computer and use it in GitHub Desktop.
Save berttejeda/976252487c6ec231a56a83de9a4beee9 to your computer and use it in GitHub Desktop.
Redis Cluster with Docker Compose v3
version: "3.5"
services:
redis-master-1:
image: redislabs/redis:6.0.6-39
container_name: redis-master-1
command: |-
sh -c "redis-server \
--cluster-enabled yes --appendonly yes \
--cluster-config-file nodes.conf \
--cluster-node-timeout 5000"
ports:
- 17000:6379
networks:
- redisnet
redis-master-2:
image: redislabs/redis:6.0.6-39
container_name: redis-master-2
depends_on:
- redis-master-1
command: |-
sh -c "redis-server \
--cluster-enabled yes --appendonly yes \
--cluster-config-file nodes.conf \
--cluster-node-timeout 5000"
ports:
- 17001:6379
networks:
- redisnet
redis-master-3:
image: redislabs/redis:6.0.6-39
container_name: redis-master-3
command: |-
sh -c "redis-server \
--cluster-enabled yes --appendonly yes \
--cluster-config-file nodes.conf \
--cluster-node-timeout 5000"
ports:
- 17002:6379
networks:
- redisnet
depends_on:
- redis-master-2
redis-slave-1:
image: redislabs/redis:6.0.6-39
container_name: redis-slave-1
command: |-
sh -c "redis-server \
--cluster-enabled yes --appendonly yes \
--cluster-config-file nodes.conf \
--cluster-node-timeout 5000"
ports:
- 17003:6379
networks:
- redisnet
depends_on:
- redis-master-3
redis-slave-2:
image: redislabs/redis:6.0.6-39
container_name: redis-slave-2
command: |-
sh -c "redis-server \
--cluster-enabled yes --appendonly yes \
--cluster-config-file nodes.conf \
--cluster-node-timeout 5000"
ports:
- 17004:6379
networks:
- redisnet
depends_on:
- redis-master-3
redis-slave-3:
image: redislabs/redis:6.0.6-39
container_name: redis-slave-3
command: |-
sh -c "redis-server \
--cluster-enabled yes --appendonly yes \
--cluster-config-file nodes.conf \
--cluster-node-timeout 5000 --daemonize yes; \
sleep 10; \
echo yes | redis-cli \
--cluster create \
--cluster-replicas 1 \
$$(ping -W2 -c1 redis-master-1 | grep PING | sed -r 's/^[^\(]*\(([\.0-9]*)\).*/\1/'):6379 \
$$(ping -W2 -c1 redis-master-2 | grep PING | sed -r 's/^[^\(]*\(([\.0-9]*)\).*/\1/'):6379 \
$$(ping -W2 -c1 redis-master-3 | grep PING | sed -r 's/^[^\(]*\(([\.0-9]*)\).*/\1/'):6379 \
$$(ping -W2 -c1 redis-slave-1 | grep PING | sed -r 's/^[^\(]*\(([\.0-9]*)\).*/\1/'):6379 \
$$(ping -W2 -c1 redis-slave-2 | grep PING | sed -r 's/^[^\(]*\(([\.0-9]*)\).*/\1/'):6379 \
$$(ping -W2 -c1 redis-slave-3 | grep PING | sed -r 's/^[^\(]*\(([\.0-9]*)\).*/\1/'):6379 &&\
while true; do { sleep 300; } ; done"
ports:
- 17005:6379
networks:
- redisnet
depends_on:
- redis-master-1
- redis-master-2
- redis-master-3
- redis-slave-1
- redis-slave-2
networks:
redisnet:
driver: bridge
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment