Skip to content

docker快速创建redis服务

更新:2024-11-04 at 08:12
  1. 创建必要的目录用于持久化redis的数据和配置,例如
mkdir -p /Users/Kanchil/docker-redis/data
mkdir -p /Users/Kanchil/docker-redis/conf
  1. 可以去GitHub上下载一份想要安装redis版本的配置文件redis.conf

下载后复制一份到/Users/Kanchil/docker-redis/conf目录下

  1. 修改redis.conf文件以满足需要,例如启用远程访问、设置密码等
# bind 127.0.0.1 				# 注释掉,这是限制redis只能本地访问
protected-mode no 		# 默认yes,开启保护模式,限制为本地访问
daemonize no					# 使用no,使用yes后台启动会和 docker run -d 的参数冲突,可能会启动失败
appendonly yes 				# redis持久化(可选)
requirepass 密码 			 # 配置redis访问密码
  1. 通过运行一个sh脚本,在docker中创建redis服务并启动

sh脚本如下

#!/bin/bash

appName='docker-redis'
dockerImageImage='redis'
redisData='/Users/Kanchil/docker-redis'
redisPassword='docker-redis'

mkdir -p "${redisData}"/logs
mkdir -p "${redisData}"/data
mkdir -p "${redisData}"/conf

function stop_app() {
  # 停止
  docker stop "${appName}"
  echo "服务  ${appName} 已停止。 "
}

function rm_app() {
  stop_app
  sleep 1s
  # 删除
  docker rm -f "${appName}"
  echo "服务  ${appName} 已删除。 "
}

function start_app() {
  # 停止并删除
  rm_app
  sleep 1s

  # 启动  --restart=always 自启动
  # --privileged=true 选项在Docker中会赋予容器几乎与主机相同的权限。
  docker run -d -p 6379:6379 --name "${appName}" \
  -v "${redisData}"/logs:/logs \
  -v "${redisData}"/data:/data \
  -v "${redisData}"/conf/redis.conf:/usr/local/etc/redis/redis.conf \
  redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes --requirepass "${REDIS_PASSWORD}"

  echo '启动中,等待 5s ... '
  sleep 5s
}


if [ "$1" = "stop" ]; then
  stop_app
elif [ "$1" = "rm" ]; then
  rm_app
elif [ "$1" = "start" ]; then
  start_app
elif [ "$1" = "" ]; then
  start_app
else
  echo "请使用参数:start | stop | rm 运行!"
fi