docker-compose的redis集群 yml,以集群方式启动
时间: 2023-07-19 13:32:23 浏览: 226
基于docker-compose一键离线部署redis6.2.8 cluster集群工具
以下是一个使用 `docker-compose` 启动 Redis 集群的示例 `docker-compose.yml` 文件:
```yaml
version: '3.7'
services:
redis-0:
image: redis:5.0.7
container_name: redis-0
command: redis-server /usr/local/etc/redis/redis.conf
environment:
- REDIS_REPLICATION_MODE=cluster
- REDIS_CLUSTER_ANNOUNCE_IP=redis-0
- REDIS_CLUSTER_ANNOUNCE_PORT=6379
- REDIS_CLUSTER_CONFIG_FILE=/data/nodes.conf
ports:
- 6379:6379
volumes:
- ./redis-0:/data
networks:
redis-cluster:
ipv4_address: 172.50.0.2
redis-1:
image: redis:5.0.7
container_name: redis-1
command: redis-server /usr/local/etc/redis/redis.conf
environment:
- REDIS_REPLICATION_MODE=cluster
- REDIS_CLUSTER_ANNOUNCE_IP=redis-1
- REDIS_CLUSTER_ANNOUNCE_PORT=6379
- REDIS_CLUSTER_CONFIG_FILE=/data/nodes.conf
ports:
- 6380:6379
volumes:
- ./redis-1:/data
networks:
redis-cluster:
ipv4_address: 172.50.0.3
redis-2:
image: redis:5.0.7
container_name: redis-2
command: redis-server /usr/local/etc/redis/redis.conf
environment:
- REDIS_REPLICATION_MODE=cluster
- REDIS_CLUSTER_ANNOUNCE_IP=redis-2
- REDIS_CLUSTER_ANNOUNCE_PORT=6379
- REDIS_CLUSTER_CONFIG_FILE=/data/nodes.conf
ports:
- 6381:6379
volumes:
- ./redis-2:/data
networks:
redis-cluster:
ipv4_address: 172.50.0.4
networks:
redis-cluster:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.50.0.0/16
```
此 `docker-compose.yml` 文件定义了三个 Redis 节点 (`redis-0`, `redis-1`, `redis-2`),每个节点都使用了相同的 Redis 镜像 (`redis:5.0.7`)。每个节点都映射了它们的容器端口 `6379` 到主机上的端口 `6379`、`6380`、`6381`。每个节点都指定了一个不同的 `ipv4_address`,以便它们可以在同一网络下进行通信。
每个节点都指定了一些环境变量来启用 Redis 集群模式和配置节点的信息。在这个例子中,我们使用了节点的容器名作为节点的 `REDIS_CLUSTER_ANNOUNCE_IP`,并且使用默认的 `6379` 端口。
此外,每个节点都映射了一个本地目录到容器内的 `/data` 目录,以便持久化节点数据。在这个例子中,我们将每个节点的数据存储在本地的 `./redis-0`、`./redis-1`、`./redis-2` 目录中。
最后,我们定义了一个名为 `redis-cluster` 的网络,并分配了一个 IP 地址段。每个节点都加入了这个网络,并指定了一个不同的 IP 地址。
要启动 Redis 集群,只需在包含 `docker-compose.yml` 文件的目录中运行 `docker-compose up` 命令即可。注意,在第一次启动集群时,你需要手动执行以下命令来创建集群:
```sh
docker exec -it redis-0 redis-cli --cluster create 172.50.0.2:6379 172.50.0.3:6379 172.50.0.4:6379 --cluster-replicas 0
```
这会创建一个包含三个节点的 Redis 集群,每个节点都没有从节点。你可以根据需要调整节点的数量和从节点的数量。
阅读全文