diff --git a/two-host/.env b/two-host/.env new file mode 100644 index 0000000..fc65eba --- /dev/null +++ b/two-host/.env @@ -0,0 +1,13 @@ +TIMEZONE=Europe/Istanbul +REDIS_VERSION=7.4 + +REDIS1_PORT=6379 +REDIS2_PORT=6380 + +REDIS1_PASSWORD=super_secret_redis1_password +REDIS2_PASSWORD=super_secret_redis2_password + +COMMANDER1_PORT=8081 +COMMANDER2_PORT=8082 +COMMANDER_HTTP_USER=admin +COMMANDER_HTTP_PASSWORD=another_strong_password diff --git a/two-host/docker-compose.yml b/two-host/docker-compose.yml new file mode 100644 index 0000000..eeed939 --- /dev/null +++ b/two-host/docker-compose.yml @@ -0,0 +1,103 @@ + +services: + redis1: + image: redis:${REDIS_VERSION} + container_name: redis-server-1 + restart: unless-stopped + command: > + redis-server + --appendonly yes + --requirepass ${REDIS1_PASSWORD} + --maxmemory 512mb + --maxmemory-policy allkeys-lru + --save 900 1 + --save 300 10 + --save 60 10000 + environment: + - TZ=${TIMEZONE} + ports: + - "${REDIS1_PORT}:6379" + volumes: + - redis1-data:/data + networks: + - redis-network + healthcheck: + test: ["CMD", "redis-cli", "-a", "${REDIS1_PASSWORD}", "PING"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 20s + + redis2: + image: redis:${REDIS_VERSION} + container_name: redis-server-2 + restart: unless-stopped + command: > + redis-server + --appendonly yes + --requirepass ${REDIS2_PASSWORD} + --maxmemory 512mb + --maxmemory-policy allkeys-lru + --save 900 1 + --save 300 10 + --save 60 10000 + environment: + - TZ=${TIMEZONE} + ports: + - "${REDIS2_PORT}:6379" + volumes: + - redis2-data:/data + networks: + - redis-network + healthcheck: + test: ["CMD", "redis-cli", "-a", "${REDIS2_PASSWORD}", "PING"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 20s + + redis-commander-1: + image: rediscommander/redis-commander:latest + container_name: redis-commander-1 + restart: unless-stopped + depends_on: + redis1: + condition: service_healthy + environment: + - TZ=${TIMEZONE} + # UI auth + - HTTP_USER=${COMMANDER_HTTP_USER} + - HTTP_PASSWORD=${COMMANDER_HTTP_PASSWORD} + # Format: name:host:port:db:password + - REDIS_HOSTS=redis1:redis1:6379:0:${REDIS1_PASSWORD} + ports: + - "${COMMANDER1_PORT}:8081" + networks: + - redis-network + + redis-commander-2: + image: rediscommander/redis-commander:latest + container_name: redis-commander-2 + restart: unless-stopped + depends_on: + redis2: + condition: service_healthy + environment: + - TZ=${TIMEZONE} + - HTTP_USER=${COMMANDER_HTTP_USER} + - HTTP_PASSWORD=${COMMANDER_HTTP_PASSWORD} + - REDIS_HOSTS=redis2:redis2:6379:0:${REDIS2_PASSWORD} + ports: + - "${COMMANDER2_PORT}:8081" + networks: + - redis-network + +networks: + redis-network: + driver: bridge + +volumes: + redis1-data: + driver: local + redis2-data: + driver: local