Files
compose-anything/src/redis-cluster/docker-compose.yaml
2025-11-10 19:55:44 +08:00

196 lines
5.5 KiB
YAML

x-defaults: &defaults
restart: unless-stopped
logging:
driver: json-file
options:
max-size: 100m
max-file: "3"
services:
redis-cluster-init:
image: ${GLOBAL_REGISTRY:-}redis:${REDIS_VERSION:-8.2.1-alpine}
environment:
- TZ=${TZ:-UTC}
command: >
sh -c "
echo 'Waiting for all Redis instances to start...' &&
sleep 5 &&
redis-cli --cluster create
redis-1:6379 redis-2:6379 redis-3:6379
redis-4:6379 redis-5:6379 redis-6:6379
--cluster-replicas 1 --cluster-yes
"
depends_on:
redis-1:
condition: service_healthy
redis-2:
condition: service_healthy
redis-3:
condition: service_healthy
redis-4:
condition: service_healthy
redis-5:
condition: service_healthy
redis-6:
condition: service_healthy
profiles:
- init
redis-1:
<<: *defaults
image: ${GLOBAL_REGISTRY:-}redis:${REDIS_VERSION:-8.2.1-alpine}
environment:
- TZ=${TZ:-UTC}
command: redis-server --port 6379 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes
ports:
- "7000:6379"
volumes:
- redis_1_data:/data
deploy:
resources:
limits:
cpus: ${REDIS_CLUSTER_1_CPU_LIMIT:-0.5}
memory: ${REDIS_CLUSTER_1_MEMORY_LIMIT:-512M}
reservations:
cpus: ${REDIS_CLUSTER_1_CPU_RESERVATION:-0.25}
memory: ${REDIS_CLUSTER_1_MEMORY_RESERVATION:-256M}
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 3s
retries: 3
start_period: 5s
redis-2:
<<: *defaults
image: ${GLOBAL_REGISTRY:-}redis:${REDIS_VERSION:-8.2.1-alpine}
environment:
- TZ=${TZ:-UTC}
command: redis-server --port 6379 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes
ports:
- "7001:6379"
volumes:
- redis_2_data:/data
deploy:
resources:
limits:
cpus: ${REDIS_CLUSTER_2_CPU_LIMIT:-0.5}
memory: ${REDIS_CLUSTER_2_MEMORY_LIMIT:-512M}
reservations:
cpus: ${REDIS_CLUSTER_2_CPU_RESERVATION:-0.25}
memory: ${REDIS_CLUSTER_2_MEMORY_RESERVATION:-256M}
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 3s
retries: 3
start_period: 5s
redis-3:
<<: *defaults
image: ${GLOBAL_REGISTRY:-}redis:${REDIS_VERSION:-8.2.1-alpine}
environment:
- TZ=${TZ:-UTC}
command: redis-server --port 6379 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes
ports:
- "7002:6379"
volumes:
- redis_3_data:/data
deploy:
resources:
limits:
cpus: ${REDIS_CLUSTER_3_CPU_LIMIT:-0.5}
memory: ${REDIS_CLUSTER_3_MEMORY_LIMIT:-512M}
reservations:
cpus: ${REDIS_CLUSTER_3_CPU_RESERVATION:-0.25}
memory: ${REDIS_CLUSTER_3_MEMORY_RESERVATION:-256M}
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 3s
retries: 3
start_period: 5s
redis-4:
<<: *defaults
image: ${GLOBAL_REGISTRY:-}redis:${REDIS_VERSION:-8.2.1-alpine}
environment:
- TZ=${TZ:-UTC}
command: redis-server --port 6379 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes
ports:
- "7003:6379"
volumes:
- redis_4_data:/data
deploy:
resources:
limits:
cpus: ${REDIS_CLUSTER_4_CPU_LIMIT:-0.5}
memory: ${REDIS_CLUSTER_4_MEMORY_LIMIT:-512M}
reservations:
cpus: ${REDIS_CLUSTER_4_CPU_RESERVATION:-0.25}
memory: ${REDIS_CLUSTER_4_MEMORY_RESERVATION:-256M}
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 3s
retries: 3
start_period: 5s
redis-5:
<<: *defaults
image: ${GLOBAL_REGISTRY:-}redis:${REDIS_VERSION:-8.2.1-alpine}
environment:
- TZ=${TZ:-UTC}
command: redis-server --port 6379 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes
ports:
- "7004:6379"
volumes:
- redis_5_data:/data
deploy:
resources:
limits:
cpus: ${REDIS_CLUSTER_5_CPU_LIMIT:-0.5}
memory: ${REDIS_CLUSTER_5_MEMORY_LIMIT:-512M}
reservations:
cpus: ${REDIS_CLUSTER_5_CPU_RESERVATION:-0.25}
memory: ${REDIS_CLUSTER_5_MEMORY_RESERVATION:-256M}
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 3s
retries: 3
start_period: 5s
redis-6:
<<: *defaults
image: ${GLOBAL_REGISTRY:-}redis:${REDIS_VERSION:-8.2.1-alpine}
environment:
- TZ=${TZ:-UTC}
command: redis-server --port 6379 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes
ports:
- "7005:6379"
volumes:
- redis_6_data:/data
deploy:
resources:
limits:
cpus: ${REDIS_CLUSTER_6_CPU_LIMIT:-0.5}
memory: ${REDIS_CLUSTER_6_MEMORY_LIMIT:-512M}
reservations:
cpus: ${REDIS_CLUSTER_6_CPU_RESERVATION:-0.25}
memory: ${REDIS_CLUSTER_6_MEMORY_RESERVATION:-256M}
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 3s
retries: 3
start_period: 5s
volumes:
redis_1_data:
redis_2_data:
redis_3_data:
redis_4_data:
redis_5_data:
redis_6_data: