由於使用官方的redis鏡像在搭建起來容器之后還需要使用命令對啟動的多個容器建立主從關系, 從docker hub上發現了bitnami/redis-cluster這個神奇的鏡像.
根據bitnami/redis-cluster官方文檔上提供的模板, 創建的集群無法供docker外部調用. 通過提供的參數最終將端口成功映射了出來供外部使用;
version: "2"
services:
redis-node-0:
image: docker.io/bitnami/redis-cluster:6.2
ports:
- 7001:7001 # redis連接用端口
- 17001:17001 # redis之間消息連接的端口 默認是redis連接端口+10000
restart: always
environment:
- 'REDIS_CLUSTER_ANNOUNCE_IP=192.168.10.248' # 當前redis使用的靜態IP(為了開放出來供外部使用這里寫宿主機IP)
- 'REDIS_PORT_NUMBER=7001' # 替換原始6379端口
- 'REDIS_CLUSTER_DYNAMIC_IPS=no' # 標明不使用動態IP
- 'ALLOW_EMPTY_PASSWORD=yes'
- 'REDIS_NODES=192.168.10.248:7001 192.168.10.248:7002 192.168.10.248:7003 192.168.10.248:7004 192.168.10.248:7005 192.168.10.248:7006'
redis-node-1:
image: docker.io/bitnami/redis-cluster:6.2
ports:
- 7002:7002
- 17002:17002
restart: always
environment:
- 'REDIS_CLUSTER_ANNOUNCE_IP=192.168.10.248'
- 'REDIS_PORT_NUMBER=7002'
- 'REDIS_CLUSTER_DYNAMIC_IPS=no'
- 'ALLOW_EMPTY_PASSWORD=yes'
- 'REDIS_NODES=192.168.10.248:7001 192.168.10.248:7002 192.168.10.248:7003 192.168.10.248:7004 192.168.10.248:7005 192.168.10.248:7006'
redis-node-2:
image: docker.io/bitnami/redis-cluster:6.2
ports:
- 7003:7003
- 17003:17003
restart: always
environment:
- 'ALLOW_EMPTY_PASSWORD=yes'
- 'REDIS_CLUSTER_ANNOUNCE_IP=192.168.10.248'
- 'REDIS_CLUSTER_DYNAMIC_IPS=no'
- 'REDIS_PORT_NUMBER=7003'
- 'REDIS_NODES=192.168.10.248:7001 192.168.10.248:7002 192.168.10.248:7003 192.168.10.248:7004 192.168.10.248:7005 192.168.10.248:7006'
redis-node-3:
image: docker.io/bitnami/redis-cluster:6.2
ports:
- 7004:7004
- 17004:17004
restart: always
environment:
- 'ALLOW_EMPTY_PASSWORD=yes'
- 'REDIS_CLUSTER_ANNOUNCE_IP=192.168.10.248'
- 'REDIS_CLUSTER_DYNAMIC_IPS=no'
- 'REDIS_PORT_NUMBER=7004'
- 'REDIS_NODES=192.168.10.248:7001 192.168.10.248:7002 192.168.10.248:7003 192.168.10.248:7004 192.168.10.248:7005 192.168.10.248:7006'
redis-node-4:
image: docker.io/bitnami/redis-cluster:6.2
ports:
- 7005:7005
- 17005:17005
restart: always
environment:
- 'ALLOW_EMPTY_PASSWORD=yes'
- 'REDIS_CLUSTER_ANNOUNCE_IP=192.168.10.248'
- 'REDIS_CLUSTER_DYNAMIC_IPS=no'
- 'REDIS_PORT_NUMBER=7005'
- 'REDIS_NODES=192.168.10.248:7001 192.168.10.248:7002 192.168.10.248:7003 192.168.10.248:7004 192.168.10.248:7005 192.168.10.248:7006'
redis-node-5:
image: docker.io/bitnami/redis-cluster:6.2
ports:
- 7006:7006
- 17006:17006
restart: always
depends_on:
- redis-node-0
- redis-node-1
- redis-node-2
- redis-node-3
- redis-node-4
environment:
- 'ALLOW_EMPTY_PASSWORD=yes'
- 'REDIS_CLUSTER_ANNOUNCE_IP=192.168.10.248'
- 'REDIS_CLUSTER_DYNAMIC_IPS=no'
- 'REDIS_PORT_NUMBER=7006'
- 'REDIS_CLUSTER_REPLICAS=1'
- 'REDIS_NODES=192.168.10.248:7001 192.168.10.248:7002 192.168.10.248:7003 192.168.10.248:7004 192.168.10.248:7005 192.168.10.248:7006'
- 'REDIS_CLUSTER_CREATOR=yes'