From b5c1c47a3e5ee34026ec4be19d4234c7ad266de8 Mon Sep 17 00:00:00 2001 From: Endial Fang Date: Thu, 14 Sep 2023 11:04:48 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0=E8=AF=B4=E6=98=8E?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E6=9C=89=E5=85=B3=E5=8F=98=E9=87=8F=E6=9B=BF?= =?UTF-8?q?=E6=8D=A2=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 83 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 50 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index bfd8cb6..c9146f8 100644 --- a/README.md +++ b/README.md @@ -69,11 +69,11 @@ $ docker-compose -f docker-compose-cluster.yml up -d 镜像默认提供以下数据卷定义,默认数据分别存储在自动生成的应用名对应`redis`子目录中: ```shell -/srv/data # Redis 数据文件,主要存放Redis持久化数据;自动创建子目录redis -/srv/datalog # Redis 数据操作日志文件;自动创建子目录redis -/srv/conf # Redis 配置文件;自动创建子目录redis -/var/log # 日志文件,日志文件名为:redis.log -/var/run # 进程运行PID文件,PID文件名为:redis_6379.pid、redis_sentinel.pid +/srv/redis/data # Redis 数据文件,主要存放 Redis 持久化数据 +/srv/redis/conf # Redis 配置文件 +/srv/redis/cert # TLS 通讯证书文件 +/srv/redis/log # 日志文件,日志文件名为:redis.log +/var/run/redis # 进程运行 PID 文件,PID 文件名为:redis.pid、redis_sentinel.pid ``` 如果需要持久化存储相应数据,需要**在宿主机建立本地目录**,并在使用镜像初始化容器时进行映射。宿主机相关的目录中如果不存在对应应用 Redis 的子目录或相应数据文件,则容器会在初始化时创建相应目录及文件。 @@ -83,26 +83,54 @@ $ docker-compose -f docker-compose-cluster.yml up -d 在初始化 Redis 容器时,如果没有预置配置文件,可以在命令行中设置相应环境变量对默认参数进行修改。类似命令如下: ```shell -$ docker run -d -e "APP_ENV_KEY_NAME=key_value" registry.cn-shenzhen.aliyuncs.com/colovu/redis:latest +$ docker run -d -e "REDIS_CFG_KEYNAME=key_value" registry.cn-shenzhen.aliyuncs.com/colovu/redis:latest +``` + +### 自动变量替换 + +针对应用配置文件中的配置项,支持由环境变量名自动替换生成,该类环境变量需要使用统一前缀,定义规则为:`REDIS_CFG_*=` + +- `REDIS_CFG_`:环境变量自动替换标识,具备该前缀的环境变量会被自动处理并更新至配置文件 +- `*`:配置文件中对应的配置项名,大小写需要符合实际参数名要求;特殊字符需要符合`特殊字符替换规则` +- ``:配置项对应值 + +**特殊字符替换规则**: + +因为 Shell 变量只能以字母、数字和下划线组成,针对'xml'、'ini'等配置文件中使用的'.'、'-'等特殊字符,需要进行重定义及转换。预定义如下: + + + "_" ==> "-" : 应用配置属性中的`-`(中划线),与环境变量中由`_`(单下划线)表示 + + "__" ==> "_" : 应用配置属性中的`_`(下划线),在环境变量中由`__`(双下划线)表示 + + "___" ==> "." : 应用配置属性中的`.`(半角点),在环境变量中由`___`(三下划线)表示 + +例如: + +```shell +# 用于`key-value`类型的配置 +REDIS_CFG_REQUIREPASS=colovu123 +REDIS_CFG_APPENDONLY=no + +# 容器启动后,应用配置文件中对应配置项生效,且设置为相应值: +requirepass colovu123 +appendonly no ``` ### 常规配置参数 常使用的环境变量主要包括: -- **ALLOW_ANONYMOUS**:默认值:**no**。设置是否允许无密码连接。如果没有设置`REDIS_PASSWORD`,则必须设置当前环境变量为 `yes` -- **REDIS_PASSWORD**:默认值:**无**。客户端认证的密码 -- **REDIS_DISABLE_COMMANDS**:默认值:**无**。设置禁用的 Redis 命令 -- **REDIS_AOF_ENABLED**:默认值:**yes**。设置是否启用 Append Only File 存储 +- **ALLOW_ANONYMOUS**:默认值:**no**。设置是否允许无密码连接。如果没有设置`REDIS_CFG_REQUIREPASS`,则必须设置当前环境变量为 `yes` +- **REDIS_CFG_REQUIREPASS**:默认值:**无**。客户端认证的密码 +- **REDIS_CFG_APPENDONLY**:默认值:**no**。设置是否启用 Append Only File 存储 -### 可选配置参数 +### 常规可选参数 如果没有必要,可选配置参数可以不用定义,直接使用对应的默认值,主要包括: -- **ENV_DEBUG**:默认值:**false**。设置是否输出容器调试信息。可设置为:1、true、yes -- **REDIS_PORT**:默认值:**6379**。设置应用的默认客户访问端口 -- **REDIS_PASSWORD_FILE**:默认值:**无**。以绝对地址指定的客户端认证用户密码存储文件。该路径指的是容器内的路径 -- **REDIS_MASTER_PASSWORD_FILE**:默认值:**无**。以绝对地址指定的服务器密码存储文件。该路径指的是容器内的路径 +- `ENV_DEBUG`:默认值:**false**。设置是否输出容器调试信息。可选值:false、no、true、yes +- **DISABLE_COMMANDS**:默认值:**无**。设置禁用的 Redis 命令 +- **PASSWORD_FILE**:默认值:**无**。以绝对地址指定的客户端认证用户密码存储文件。该路径指的是容器内的路径 +- **MASTER_PASSWORD_FILE**:默认值:**无**。以绝对地址指定的服务器密码存储文件。该路径指的是容器内的路径 +- **REDIS_CFG_PORT**:默认值:**6379**。设置应用的默认客户访问端口 ### Sentinel配置参数 @@ -110,28 +138,17 @@ $ docker run -d -e "APP_ENV_KEY_NAME=key_value" registry.cn-shenzhen.aliyuncs.co - **REDIS_SENTINEL_MASTER_NAME**:默认值:**无** - **REDIS_SENTINEL_PORT_NUMBER**:默认值:**26379**。设置 Sentinel 默认端口 -### 集群配置参数 - -使用 Redis 镜像,可以很容易的建立一个 [redis](https://redis.apache.org/doc/r3.1.2/redisAdmin.html) 集群。针对 redis 的集群模式(复制模式),有以下参数可以配置: - -- **REDIS_REPLICATION_MOD**:默认值:**无**。当前主机在集群中的工作模式,可使用值为:`master`/`slave`/`replica` -- **REDIS_MASTER_HOST**:默认值:**无**。作为`slave`/`replica`时,对应的 master 主机名或 IP 地址 -- **REDIS_MASTER_PORT_NUMBER**:默认值:**6379**。master 主机对应的端口 -- **REDIS_MASTER_PASSWORD**:默认值:**无**。master 主机对应的登录验证密码 - ### TLS配置参数 使用证书加密传输时,相关配置参数如下: -- **REDIS_TLS_ENABLED**:启用或禁用 TLS。默认值:**no** -- **REDIS_TLS_PORT**:使用 TLS 加密传输的端口。默认值:**6379** -- **REDIS_TLS_CERT_FILE**:TLS 证书文件。默认值:**无** -- **REDIS_TLS_KEY_FILE**:TLS 私钥文件。默认值:**无** -- **REDIS_TLS_CA_FILE**:TLS 根证书文件。默认值:**无** -- **REDIS_TLS_DH_PARAMS_FILE**:包含 DH 参数的配置文件 (DH 加密方式时需要)。默认值:**无** -- **REDIS_TLS_AUTH_CLIENTS**:配置客户端是否需要 TLS 认证。 默认值:**yes** +- **REDIS_CFG_TLS_PORT**:使用 TLS 加密传输的端口。默认值:**6379** +- **REDIS_CFG_TLS_CERT_FILE**:TLS 证书文件。默认值:**无** +- **REDIS_CFG_TLS_KEY_FILE**:TLS 私钥文件。默认值:**无** +- **REDIS_CFG_TLS_CA_CERT_FILE**:TLS 根证书文件。默认值:**无** +- **REDIS_CFG_TLS_AUTH_CLIENTS**:配置客户端是否需要 TLS 认证。 默认值:**no** -当使用 TLS 时,则默认的 non-TLS 通讯被禁用。如果需要同时支持 TLS 与 non-TLS 通讯,可以使用参数`REDIS_TLS_PORT`配置容器使用不同的 TLS 端口。 +当使用 TLS 时,则默认的 non-TLS 通讯被禁用。如果需要同时支持 TLS 与 non-TLS 通讯,可以使用参数`REDIS_CFG_TLS_PORT`配置容器使用不同的 TLS 端口。 ## 安全 @@ -156,7 +173,7 @@ services: redis: ... environment: - - REDIS_PASSWORD=colovu + - REDIS_CFG_REQUIREPASS=colovu ... ```