docker-compose.yml
文件services:
redis-cluster:
image: redis:8
container_name: redis-cluster
networks:
- baota_net
volumes:
- ./redis-data:/data
- ./init.sh:/data/init.sh
ports:
- "7000-7005:7000-7005" # 客户端端口
- "17000-17005:17000-17005" # Cluster bus端口
command: bash /data/init.sh
redisinsight:
image: redis/redisinsight:latest
container_name: redisinsight
networks:
- baota_net
ports:
- "8001:5540" # 浏览器访问 http://宿主机IP:8001
restart: unless-stopped
volumes:
redis-data:
redisinsight-data:
networks:
baota_net:
external: true
init.sh
文件#!/bin/bash
REDIS_PASSWORD="ProdStrongPass123!"
# 创建 Redis 节点配置并启动
for p in 7000 7001 7002 7003 7004 7005; do
mkdir -p /data/$p
cat > /data/$p/redis.conf <<EOF
port $p
cluster-enabled yes
cluster-config-file nodes-$p.conf
cluster-node-timeout 5000
appendonly yes
protected-mode no
bind 0.0.0.0
requirepass $REDIS_PASSWORD
masterauth $REDIS_PASSWORD
# 广播容器名,保证 RedisInsight 容器内部可访问
cluster-announce-ip redis-cluster
cluster-announce-port $p
cluster-announce-bus-port 1$p
EOF
redis-server /data/$p/redis.conf &
done
# 等待 Redis 节点启动
sleep 5
# 创建集群
yes yes | redis-cli -a $REDIS_PASSWORD --cluster create \
redis-cluster:7000 redis-cluster:7001 redis-cluster:7002 \
redis-cluster:7003 redis-cluster:7004 redis-cluster:7005 \
--cluster-replicas 1
# 保持容器运行
tail -f /dev/null
字段 | 填写示例 |
---|---|
Host | 192.168.10.155(宿主机IP)或 redis-cluster(容器内部UI) |
Port | 7000 |
Username | default |
Password | ProdStrongPass123! |
Use TLS | false |
注意:免费版不会显示 cluster bus 细节,但可以浏览和操作各节点数据。