Last active
December 10, 2023 14:38
-
-
Save tgran2028/095e2e833fed99ca25645da2a8182523 to your computer and use it in GitHub Desktop.
Run redis-stack docker container
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/bash | |
################### set env vars ################### | |
# changedir to script parent | |
cd "$(dirname "$0")" || exit | |
# container name | |
REDIS_STACK_CONTAINER_NAME="redis-stack" | |
# local dir for persistent data & config | |
REDIS_STACK_DIR="$HOME/.local/redis/redis-stack/" | |
# data dir | |
REDIS_STACK_DATA_DIR="$REDIS_STACK_DIR/data/" | |
# conf file | |
REDIS_STACK_CONF="$REDIS_STACK_DIR/etc/redis-stack.conf" | |
# db port | |
REDIS_STACK_PORT=5555 | |
# redis insight port | |
REDIS_INSIGHT_PORT=9999 | |
# docker network | |
REDIS_DOCKER_NETWORK="redis-net" | |
env_vars=( | |
["REDIS_STACK_CONTAINER_NAME"]="$REDIS_STACK_CONTAINER_NAME" | |
["REDIS_STACK_DIR"]="$REDIS_STACK_DIR" | |
["REDIS_STACK_DATA_DIR"]="$REDIS_STACK_DATA_DIR" | |
["REDIS_STACK_CONF"]="$REDIS_STACK_CONF" | |
["REDIS_STACK_PORT"]="$REDIS_STACK_PORT" | |
["REDIS_INSIGHT_PORT"]="$REDIS_INSIGHT_PORT" | |
["REDIS_DOCKER_NETWORK"]="$REDIS_DOCKER_NETWORK" | |
) | |
# create config.json | |
echo '{}' > config.json | |
for env_var in "${!env_vars[@]}"; do | |
if [[ -z "${!env_var}" ]]; then | |
echo "ERROR: $env_var is not set" | |
exit 1 | |
fi | |
jq ". + {$env_var: \"${env_vars[$env_var]}\"}" config.json > tmp.json && mv tmp.json config.json | |
done | |
################### create local dirs ################### | |
# parent to data dir | |
mkdir -p "$(dirname "$REDIS_STACK_DATA_DIR")" | |
# parent to conf file | |
mkdir -p "$(dirname "$REDIS_STACK_CONF")" | |
################### build docker image ################### | |
# create redis-net network if not exists | |
docker network create redis-net 2> /dev/null || true | |
# check if container exists | |
if [[ "$(docker ps -aq -f name=$REDIS_STACK_CONTAINER_NAME)" ]]; then | |
# if container exists, prompt user for input | |
read -p "Container $REDIS_STACK_CONTAINER_NAME already exists. Do you want to delete it? [y/N] " -n 1 -r | |
echo # move to a new line | |
if [[ $REPLY =~ ^[Yy]$ ]]; then | |
# if user input is yes, delete container | |
docker stop $REDIS_STACK_CONTAINER_NAME > /dev/null 2>&1 | |
docker container rm -f $REDIS_STACK_CONTAINER_NAME | |
else | |
# if user input is no, exit | |
exit 1 | |
fi | |
fi | |
# build docker image | |
docker run \ | |
-d \ | |
--name redis-stack \ | |
-v $REDIS_STACK_DATA_DIR:/data \ | |
-v $REDIS_STACK_CONF:/redis-stack.conf \ | |
-p 127.0.0.1:${REDIS_STACK_PORT}:6379 \ | |
-p 127.0.0.1:${REDIS_INSIGHT_PORT}:8001 \ | |
--privileged \ | |
--restart always \ | |
--network $REDIS_DOCKER_NETWORK \ | |
-e AWS_ACCESS_KEY="$(aws configure get aws_access_key_id)" \ | |
-e AWS_SECRET_KEY="$(aws configure get aws_secret_access_key)" \ | |
-e DB_SYNC='true' \ | |
redis/redis-stack:latest |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment