version: "3.8" services: redis-master: image: redis:latest container_name: redis-master hostname: redis-master ports: - "6380:6379" volumes: - ./data/master:/data command: [ "redis-server", "--appendonly", "yes", "--repl-diskless-load", "on-empty-db", "--replica-announce-ip", "${HOST_IP}", "--replica-announce-port", "6380", "--protected-mode", "no", ] networks: redis-net: ipv4_address: 172.21.0.3 redis-slave-1: image: redis:latest container_name: redis-slave-1 hostname: redis-slave-1 depends_on: - redis-master ports: - "6381:6379" volumes: - ./data/slave1:/data command: [ "redis-server", "--appendonly", "yes", "--replicaof", "redis-master", "6379", "--repl-diskless-load", "on-empty-db", "--replica-announce-ip", "${HOST_IP}", "--replica-announce-port", "6381", "--protected-mode", "no", ] networks: redis-net: ipv4_address: 172.21.0.4 redis-slave-2: image: redis:latest container_name: redis-slave-2 hostname: redis-slave-2 depends_on: - redis-master ports: - "6382:6379" volumes: - ./data/slave2:/data command: [ "redis-server", "--appendonly", "yes", "--replicaof", "redis-master", "6379", "--repl-diskless-load", "on-empty-db", "--replica-announce-ip", "${HOST_IP}", "--replica-announce-port", "6382", "--protected-mode", "no", ] networks: redis-net: ipv4_address: 172.21.0.5 sentinel-1: image: redis:latest container_name: sentinel-1 hostname: sentinel-1 depends_on: - redis-master ports: - "26379:26379" command: > sh -c 'echo "bind 0.0.0.0" > /etc/sentinel.conf && echo "sentinel monitor mymaster ${HOST_IP} 6380 2" >> /etc/sentinel.conf && echo "sentinel resolve-hostnames yes" >> /etc/sentinel.conf && echo "sentinel down-after-milliseconds mymaster 10000" >> /etc/sentinel.conf && echo "sentinel failover-timeout mymaster 10000" >> /etc/sentinel.conf && echo "sentinel parallel-syncs mymaster 1" >> /etc/sentinel.conf && redis-sentinel /etc/sentinel.conf' networks: redis-net: ipv4_address: 172.21.0.6 sentinel-2: image: redis:latest container_name: sentinel-2 hostname: sentinel-2 depends_on: - redis-master ports: - "26380:26379" command: > sh -c 'echo "bind 0.0.0.0" > /etc/sentinel.conf && echo "sentinel monitor mymaster ${HOST_IP} 6380 2" >> /etc/sentinel.conf && echo "sentinel resolve-hostnames yes" >> /etc/sentinel.conf && echo "sentinel down-after-milliseconds mymaster 10000" >> /etc/sentinel.conf && echo "sentinel failover-timeout mymaster 10000" >> /etc/sentinel.conf && echo "sentinel parallel-syncs mymaster 1" >> /etc/sentinel.conf && redis-sentinel /etc/sentinel.conf' networks: redis-net: ipv4_address: 172.21.0.7 sentinel-3: image: redis:latest container_name: sentinel-3 hostname: sentinel-3 depends_on: - redis-master ports: - "26381:26379" command: > sh -c 'echo "bind 0.0.0.0" > /etc/sentinel.conf && echo "sentinel monitor mymaster ${HOST_IP} 6380 2" >> /etc/sentinel.conf && echo "sentinel resolve-hostnames yes" >> /etc/sentinel.conf && echo "sentinel down-after-milliseconds mymaster 10000" >> /etc/sentinel.conf && echo "sentinel failover-timeout mymaster 10000" >> /etc/sentinel.conf && echo "sentinel parallel-syncs mymaster 1" >> /etc/sentinel.conf && redis-sentinel /etc/sentinel.conf' networks: redis-net: ipv4_address: 172.21.0.8 redisinsight: image: redis/redisinsight:latest container_name: redisinsight ports: - "5540:5540" networks: redis-net: ipv4_address: 172.21.0.9 networks: redis-net: driver: bridge ipam: config: - subnet: 172.21.0.0/16