1.首先是docker-compose.yml文件 配置好3个容器
version: "3"
services:
redis-1:
image: redis #目标镜像
restart: always #是否跟随docker服务自动重启
environment: #设置环境变量
- TZ=Asia/Shanghai
volumes: #挂载目录
- $PWD/redis.conf:/etc/redis.conf
- $PWD/sentinel.conf:/etc/sentinel.conf
command: redis-server /etc/redis.conf #覆盖设置容器启动命令,这里设置redis使用挂载的配置文件
privileged: true #这里好像是 挂载的目录需要root权限 容器没有 需要设置
ports: #端口映射
- 8796:6379
redis-2:
image: redis
restart: always #是否跟随docker服务自动重启
environment: #设置环境变量
- TZ=Asia/Shanghai
volumes: #挂载目录
- $PWD/redis_slave.conf:/etc/redis.conf
- $PWD/sentinel.conf1:/etc/sentinel.conf
links:
- redis-1:redis_master
command: redis-server /etc/redis.conf #覆盖设置容器启动命令,这里设置redis使用挂载的配置文件
privileged: true #这里好像是 挂载的目录需要root权限 容器没有 需要设置
ports: #端口映射
- 8797:6379
redis-3:
image: redis
restart: always #是否跟随docker服务自动重启
environment: #设置环境变量
- TZ=Asia/Shanghai
volumes: #挂载目录
- $PWD/redis_slave2.conf:/etc/redis.conf
- $PWD/sentinel.conf2:/etc/sentinel.conf
links: #关联容器,这里把从redis和主redis关联起来了
- redis-1:redis_master #redis_master是别名 可以不指定
command: redis-server /etc/redis.conf #覆盖设置容器启动命令,这里设置redis使用挂载的配置文件
privileged: true #这里好像是 挂载的目录需要root权限 容器没有 需要设置
ports: #端口映射
- 8798:6379
2.修改从redis的配置文件,加入一行数据
因为前面关联了主redis,这里ip可以直接设置主redis的别名(直接容器名字没有试过)。端口虽然映射是8796,实际上还是填6376.
3.启动docker-compose up -d就可以了
哨兵模式
1.分别写3个配置文件映射到3个redis中
daemonize yes # 添加守护进程模式
#主redis配置文件
sentinel monitor redis-master localhost 6379 2 #localhost是主redis的配置,表示主数据库ip。redis-master是监听主数据库的名称,随意 2 最低通过票数
#从redis配置文件是如下,因为docker容器中已经关联了,这里的ip可以是关联的别名
sentinel monitor redis-master redis_master 6379 2
2.进入已经启动的服务器中,哨兵模式要在服务器启动后启动。
执行命令redis-sentinel ./sentinel.conf #后面是哨兵配置文件的名称