skip to content
Jayton's Blog

Docker-Compose redis集群部署

/ 3 min read

下载redis镜像

Docker-compose:
networks:
redis-cluster-compose:
driver: bridge
services:
redis-node-1:
image: redis:7.0.0
ports:
- 7000:7000
- 17000:17000
networks:
- redis-cluster-compose
hostname: redis-node-1
volumes:
- ./7000:/redis
command: redis-server /redis/redis.conf
redis-node-2:
image: redis:7.0.0
ports:
- 7001:7001
- 17001:17001
networks:
- redis-cluster-compose
hostname: redis-node-2
volumes:
- ./7001:/redis
command: redis-server /redis/redis.conf
redis-node-3:
image: redis:7.0.0
ports:
- 7002:7002
- 17002:17002
networks:
- redis-cluster-compose
hostname: redis-node-3
volumes:
- ./7002:/redis
command: redis-server /redis/redis.conf
redis-node-4:
image: redis:7.0.0
ports:
- 7003:7003
- 17003:17003
networks:
- redis-cluster-compose
hostname: redis-node-4
volumes:
- ./7003:/redis
command: redis-server /redis/redis.conf
redis-node-5:
image: redis:7.0.0
ports:
- 7004:7004
- 17004:17004
networks:
- redis-cluster-compose
hostname: redis-node-5
volumes:
- ./7004:/redis
command: redis-server /redis/redis.conf
redis-node-6:
image: redis:7.0.0
ports:
- 7005:7005
- 17005:17005
networks:
- redis-cluster-compose
hostname: redis-node-6
volumes:
- ./7005:/redis
command: redis-server /redis/redis.conf
redis-cluster-creator:
image: redis:7.0.0
ports:
- 6999:6999
networks:
- redis-cluster-compose
depends_on:
- redis-node-1
- redis-node-2
- redis-node-3
- redis-node-4
- redis-node-5
- redis-node-6
redis-insight:
image: redislabs/redisinsight
ports:
- 8001:8001
networks:
- redis-cluster-compose
volumes:
- ./redisinsight:/db
depends_on:
- redis-cluster-creator

其中,配置文件./7000是和docker-compose文件在一个文件夹下的7000文件夹

单个redis的配置文件为:

# Redis 端口(必须和 docker-compose 中映射的端口一致)
port 7000
# 禁用保护模式(允许外部连接,非生产建议小心使用)
protected-mode no
notify-keyspace-events KEA
# 后台运行(容器中不建议设置)
daemonize no
# 集群相关配置
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
# 开启 Append Only File 持久化
appendonly yes
# 数据目录(必须与 Docker 容器挂载一致)
dir /redis
# 日志级别
loglevel notice
# 绑定所有地址(容器中建议设置)
bind 0.0.0.0
cluster-announce-ip 10.204.72.153
cluster-announce-port 7000
cluster-announce-bus-port 17000

其中,cluster-announce-ip是集群对外的访问IP,如果是单机的话可以写本机ipconfig查出来的IP。

启动命令为:

docker compose -f docker-compose.yml -p redis-cluster up

因为此时还未创建集群,所以在容器外本机内找一个redis-cli命令工具,执行

./redis-cli --cluster create 10.204.72.153:7000 10.204.72.153:7001 10.204.72.153:7002 10.204.72.153:7003 10.204.72.153:7004 10.204.72.153:7005 --cluster-replicas 1

创建集群。大功告成~

image-20250704173944251