第一步 编写compose文件
docker-compose.yml
version: '3.8'
networks:
redis-network:
driver: bridge
services:
redis-master:
image: redis:7.2.4
container_name: redis-master
command: ["sh", "-c", "redis-server --protected-mode no --slave-announce-ip 192.168.0.5 --slave-announce-port 6379 --requirepass 123456"]
ports:
- "6379:6379"
networks:
- redis-network
redis-slave1:
image: redis:7.2.4
container_name: redis-slave1
ports:
- "6380:6379"
depends_on:
- redis-master
command: ["sh", "-c", "redis-server --slaveof redis-master 6379 --masterauth 123456 --requirepass 123456 --protected-mode no --slave-announce-ip 192.168.0.5 --slave-announce-port 6380"]
networks:
- redis-network
redis-slave2:
image: redis:7.2.4
container_name: redis-slave2
ports:
- "6381:6379"
depends_on:
- redis-master
command: ["sh", "-c", "redis-server --slaveof redis-master 6379 --masterauth 123456 --requirepass 123456 --protected-mode no --slave-announce-ip 192.168.0.5 --slave-announce-port 6381"]
networks:
- redis-network
redis-sentinel1:
image: redis:7.2.4
container_name: redis-sentinel1
depends_on:
- redis-master
- redis-slave1
- redis-slave2
command: >
sh -c "mkdir -p /usr/local/etc/redis &&
echo 'port 26379' > /usr/local/etc/redis/sentinel.conf &&
echo 'protected-mode no' >> /usr/local/etc/redis/sentinel.conf &&
echo 'sentinel auth-pass mymaster 123456' >> /usr/local/etc/redis/sentinel.conf &&
echo 'sentinel announce-ip 192.168.0.5' >> /usr/local/etc/redis/sentinel.conf &&
echo 'sentinel announce-port 26379' >> /usr/local/etc/redis/sentinel.conf &&
echo 'sentinel monitor mymaster 192.168.0.5 6379 2' >> /usr/local/etc/redis/sentinel.conf &&
echo 'sentinel down-after-milliseconds mymaster 5000' >> /usr/local/etc/redis/sentinel.conf &&
echo 'sentinel failover-timeout mymaster 10000' >> /usr/local/etc/redis/sentinel.conf &&
echo 'sentinel parallel-syncs mymaster 1' >> /usr/local/etc/redis/sentinel.conf &&
echo 'sentinel resolve-hostnames yes' >> /usr/local/etc/redis/sentinel.conf &&
redis-sentinel /u