Author: Gorit
Date:2023年11月4日
阅读本文基础:
- 熟悉 Linux 基础命令
- 会 docker 常见命令,了解 docker-compose
- 了解 redis
一、问题背景
由于阿里云服务器今天到期了, 但是上面用 docker 部署的 redis 也即将到期所 以需要迁
移到另一台服务器上,
:::info
但是在自己配置的过程中,发现网上的其它教程基本都没有解决一个共性问题 —— 配置文件不生效的问题,所以做一个记录
:::
二、docker 环境配置
因此我重新在新服务器上搭建了 docker 服务, 同时记得配置国内的 docker 镜像, 不然 docker 的服务器在国外, 会导致镜像下载很慢,可以参考下阿里云的 容器镜像服务
怎么配置
当 docker 环境搭建好后,我们还需要单独安装 docker-compose 功能,具体步骤如下
# 下载 (PS: 我这个版本可能比较老,需要更新内容)
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 设置执行权限
sudo chmod +x /usr/local/bin/docker-compose
三、编写 docker-compose 文件
网上有很多案例,我这边挑出我这边觉得比较好的一个版本
version: '3.3'
services:
redis:
image: redis:latest
container_name: redis
restart: always
ports:
- 6379:6379
volumes:
- ./config/redis.conf:/usr/local/etc/redis/redis.conf:rw
- ./data:/data:rw
- ./logs:/var/log/redis
command:
/bin/bash -c "redis-server /usr/local/etc/redis/redis.conf "
从 compose 文件中,我们可以看到挂载了三个目录,分别是
- config
- data
- logs
这里要注意,第一个 config 目录,我们需要先自己创建好,然后待会把后面创建的 redis.conf 文件放进去。很重要!!!
后面的文件就不用管了,使用 docker-compose 创建 docker 容器后, data 目录,logs 目录 都会被自动创建
这里有一个坑,使用 docker 挂载 volumes 时,即是我们写的是一个文件格式,最终都会被 docker 创建成目录,这就是导致 配置文件失效的根因
四、redis.conf 配置文件编写
这里有官方文档可以及参考:https://redis.io/docs/management/config-file/
用 配置文件的主要目的,是配置 redis 密码,不然的话,任何人都可以使用我们的 redis 服务,那样的话也太不安全了
网上也有很多,copy 一份就行,不用自己一行一行去写,下面是我用到的配置文件内容
# 设置Redis是否以守护进程方式运行,no,否则容器启动后会停掉
daemonize no
# 设置Redis日志级别
loglevel warning
# 设置Redis的数据持久化方式
save 900 1
save 300 10
save 60 10000
# 设置Redis的数据存储路径
dir /data
# 设置Redis的密码认证
requirepass xxxx
# 设置Redis的监听地址和端口号
#bind 127.0.0.1
port 6379
# 设置Redis的最大连接数
maxclients 10000
# 设置Redis的超时时间
timeout 0
# 设置Redis的优化参数
tcp-backlog 128
tcp-keepalive 0
databases 16
五、运行容器
docker-compose up -d
# 其她,命令
docker-compose up -d # 启动
docker-compose down # 停止
docker-compose stop # 暴力停止
如果你是第一次运行,docker 会先去下载 redis 的镜像,然后创建容器,出现如下情况,则说明运行成功了!
PS:如果是 docker 容器创建好后,再手动修改,config/redis.conf/ ,重启 docker 容器会出现如下错误
六、本地调试
打开 redis 连接 客户端,如果连接要求你输入密码,则说明,配置文件生效了,如下图
网上还有许多其他的验证方式,比如进入 docker 容器内验证,或者 服务器上安装 docker 客户端,去验证配置文件是否生效等等