如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
用 node.js 编写的 Redis Web 管理工具
$ npm install -g redis-commander
$ redis-commander
目前不支持通过 yarn 安装。请使用 npm 作为包管理器。
或者将 Redis Commander 作为 Docker 镜像运行:ghcr.io/joeferner/redis-commander 或 rediscommander/redis-commander(详见下文说明)。
多架构镜像可在 ghcr.io/joeferner/redis-commander:latest 获取。(https://github.com/joeferner/redis-commander/pkgs/container/redis-commander%EF%BC%89
[!NOTE] 注意:目前新版本未发布到 Dockerhub。
Redis Commander 可通过配置文件、环境变量或命令行参数进行配置。不同类型的配置值会相互覆盖,仅使用最后(最重要)的那个值。
配置文件使用 node-config 模块(https://github.com/lorenwest/node-config%EF%BC%89%EF%BC%8C%E9%BB%98%E8%AE%A4%E9%87%87%E7%94%A8 JSON 语法。
node-config所有配置值的优先级顺序(从最低到最高)如下:
配置文件
default.json - 此文件包含所有默认值,不应修改
default.jsonlocal.json - 可选文件,所有对 default.json 中值的本地覆盖以及启动时使用的 Redis 连接列表都应放在此处
local.jsonlocal- .json - 此文件仅可添加连接配置!当通过用户界面添加或删除连接时,Redis Commander 会覆盖此文件。在 Docker 容器内,此文件用于存储从 REDIS_HOSTS 环境变量解析的所有连接。此文件会覆盖 local.json 中定义的所有连接
local- .json``local.json还有更多可用的配置文件 - 完整的文件名列表请查看 node-config 维基(https://github.com/lorenwest/node-config/wiki/Configuration-Files%EF%BC%89
config/custom-environment-variables.json- 命令行参数 - 覆盖所有配置
要检查由文件、已设置的环境变量和命令行参数覆盖生成的最终配置,请启动 Redis Commander 并添加参数 "--test"。输出中将列出所有无效的配置键。配置测试不会检查主机名或 IP 地址是否可解析。
更多信息可在文档 docs/configuration.md 和 docs/connections.md 中找到。
[!NOTE] 镜像启动时出现配置文件“permission denied”错误可能是由于运行镜像的运行时用户错误导致的。近期版本的“docker compose”不会获取 Dockerfile 中定义的用户,而是使用其他用户,因此应如示例文件所示在 docker-compose.yml 文件中显式设置用户。
这些环境变量可用于将 Redis Commander 作为普通应用程序启动或在 Docker 容器内启动(定义在文件 config/custom-environment-variables.json 中,另见 docs/configuration.md):
config/custom-environment-variables.json
HTTP_USER
HTTP_PASSWORD
HTTP_PASSWORD_HASH
ADDRESS
PORT
READ_ONLY
URL_PREFIX
SIGNIN_PATH
ROOT_PATTERN
NOSAVE
NO_LOG_DATA
FOLDING_CHAR
VIEW_JSON_DEFAULT
USE_SCAN
SCAN_COUNT
FLUSH_ON_IMPORT
REDIS_CONNECTION_NAME
REDIS_LABEL
CLIENT_MAX_BODY_SIZE
BINARY_AS_HEX
在“环境变量”中列出的所有环境变量都可用于通过 Docker 运行镜像。以下额外的环境变量也可用(定义在 Docker 启动脚本中):
HTTP_PASSWORD_FILE
HTTP_PASSWORD_HASH_FILE
REDIS_PORT
REDIS_HOST
REDIS_SOCKET
REDIS_USERNAME
REDIS_PASSWORD
REDIS_PASSWORD_FILE
REDIS_TLS
REDIS_TLS_CA_CERT
REDIS_TLS_CA_CERT_FILE
REDIS_TLS_CERT
REDIS_TLS_CERT_FILE
REDIS_TLS_KEY
REDIS_TLS_KEY_FILE
REDIS_TLS_SERVER_NAME
REDIS_DB
REDIS_HOSTS
REDIS_OPTIONAL
SENTINEL_PORT
SENTINEL_HOST
SENTINEL_NAME
SENTINEL_USERNAME
SENTINEL_PASSWORD
SENTINEL_PASSWORD_FILE
SENTINEL_TLS
SENTINEL_TLS_CA_CERT
SENTINEL_TLS_CA_CERT_FILE
SENTINEL_TLS_CERT
SENTINEL_TLS_CERT_FILE
SENTINEL_TLS_KEY
SENTINEL_TLS_KEY_FILE
SENTINEL_TLS_SERVER_NAME
SENTINELS
K8S_SIGTERM
CLUSTERS
IS_CLUSTER
CLUSTER_NO_TLS_VALIDATION
关于映射到 CLI 参数和配置文件的(部分)说明可在 docs/connections.md 文件中找到。
K8S_SIGTERM 变量(默认值为 "0")可设置为 "1",以解决 Kubernetes 的特定问题,实现零停机 pod 替换。有关 Kubernetes 如何处理旧 pod 终止和新 pod 设置的更多信息,可参见线程 [kubernetes-retired/contrib#1140 (comment)]
K8S_SIGTERM可通过设置 REDIS_HOSTS 环境变量,以逗号分隔的字符串形式指定主机。
REDIS_HOSTS运行容器后,redis-commander 将在 localhost:8081 可用。
redis-commander## 使用 TLS 安全连接
连接到 Redis 服务器本身以及 Redis Sentinel(如果使用)的连接都可配置为要求 TLS 加密。在最简单的用例中,只需设置环境变量 REDIS_TLS=1 以及(如果使用 Sentinel)SENTINEL_TLS=1,即可启用 TLS,无需进一步检查和特殊配置。
REDIS_TLS=1``SENTINEL_TLS=1相应的命令行参数(在本地不使用 Docker 启动 Redis Commander 时)为
--redis-tls --sentinel-tls
--redis-tls --sentinel-tls更复杂的用例记录在 docs/connections.md 文件的“Configure TLS Support”部分。
REDIS_HOSTS 环境变量是主机定义的逗号分隔列表,每个主机应遵循以下模板之一:
REDIS_HOSTShostname
hostnamelabel:hostname
label:hostnamelabel:hostname:port
label:hostname:portlabel:hostname:port:dbIndex
label:hostname:port:dbIndexlabel:hostname:port:dbIndex:password
label:hostname:port:dbIndex:password通过 REDIS_HOSTS 变量定义的连接字符串不支持 TLS 连接。如果远程 Redis 服务器需要 TLS,请将所有连接写入配置文件,而不是使用 REDIS_HOSTS(参见 docs/connections.md 末尾的更复杂示例)。
REDIS_HOSTS``REDIS_HOSTS此环境变量 REDIS_HOSTS 不支持 IPv6 地址。由于 IPv6 地址中使用“:”作为分隔符,而此处字段也使用“:”作为分隔符,因此它仅支持 IPv4 或主机名。
REDIS_HOSTS## 使用 docker-compose
version: '3'
services:
redis:
container_name: redis
hostname: redis
image: redis
redis-commander:
container_name: redis-commander
hostname: redis-commander
image: ghcr.io/joeferner/redis-commander:latest
restart: always
environment:
- REDIS_HOSTS=local:redis:6379
ports:
- "8081:8081"
user: redis
[!IMPORTANT] 注意 - 较新版本的 compose 不再遵循 Dockerfile 中的 "USER" 指令,必须显式设置用户。否则,启动时会显示“permission denied”错误。
如果您在 localhost:6379 上运行 Redis,这就是开始使用所需的全部配置。
示例部署配置可在 k8s/redis-commander/deployment.yaml 中找到。
如果您的集群中已在默认命名空间运行 redis,可使用 kubectl apply -f k8s/redis-commander 部署 redis-commander。如果尚未运行 redis,可使用 kubectl apply -f k8s/redis 部署一个简单的 pod。
或者,您可以像这样将容器添加到部署的 spec 中:
containers:
- name: redis-commander
image: ghcr.io/joeferner/redis-commander
env:
- name: REDIS_HOSTS
value: instance1:redis:6379
ports:
- name: redis-commander
containerPort: 8081
Kubernetes 已知问题:
Redis Commander 可通过配置文件、环境变量或命令行参数进行配置。不同类型的配置值会相互覆盖,仅使用最后(最重要)的那个值。
配置文件使用 node-config 模块(https://github.com/lorenwest/node-config%EF%BC%89%EF%BC%8C%E9%BB%98%E8%AE%A4%E9%87%87%E7%94%A8 JSON 语法。
所有配置值的优先级顺序(从低到高)如下:
default.json - 此文件包含所有默认值,不应修改
local.json - 可选文件,所有对 default.json 中值的本地覆盖以及启动时使用的 Redis 连接列表均应放在此处
local- .json - 除连接外,不要向此文件添加任何其他内容!当通过用户界面添加或删除连接时,Redis Commander 会覆盖此文件。在 Docker 容器内,此文件用于存储从 REDIS_HOSTS 环境变量解析的所有连接。此文件会覆盖 local.json 中定义的所有连接
还有更多可用的文件 - 请查看 node-config Wiki 以获取所有可能文件名的完整列表(https://github.com/lorenwest/node-config/wiki/Configuration-Files%EF%BC%89
可以在 k8s/redis-commander/deployment.yaml 找到部署示例。如果默认命名空间中已运行带有 redis 的集群,可使用 kubectl apply -f k8s/redis-commander 部署 redis-commander。如果尚未运行 redis,可使用 kubectl apply -f k8s/redis 部署一个简单的 Pod。
或者,你可以像这样将容器添加到部署的规范中:
containers:
- name: redis-commander
image: ghcr.io/joeferner/redis-commander
env:
- name: REDIS_HOSTS
value: instance1:redis:6379
ports:
- name: redis-commander
containerPort: 8081
Kubernetes 已知问题:
REDIS_HOST 和 REDIS_PORT 环境变量,或挂载自定义的 config/local.json 配置文件到 Redis 容器中。你可以使用 Helm 在任何 Kubernetes 集群上安装该应用。目前没有可用的 Helm 仓库,因此需要从本仓库中本地检出 Helm 源代码:
helm -n myspace install redis-web-ui ./k8s/helm-chart/redis-commander
有关此Helm chart及其值的更多文档。
要使用标准Node.js镜像构建器,请执行以下操作。
advanced options链接REDIS_HOST环境变量,其值为Redis服务的名称 - 例如,redisREDIS_PORT环境变量,其值为Redis服务暴露的端口 - 例如,6379REDIS_PASSWORDredisdatabase-passwordappl=redis-commander-dev1oc delete all --selector appl=redis-commander-dev1
redis-servernpm ci,然后运行node bin/redis-commander.jsRedis Commander允许为HTTP身份验证设置纯文本密码或"bcrypt"密码哈希。
要生成哈希密码,可以使用脚本bin/bcrypt-password.js。需提供参数"-p"来设置密码。
使用示例:
script
$ git clone https://github.com/joeferner/redis-commander.git
$ cd redis-commander/bin
$ node bcrypt-password.js -p myplainpass
$2b$10BQPbC8dlxeEqB/nXOkyjr.tlafGZ28J3ug8sWIMRoeq5LSVOXpl3W
生成的哈希可以在配置文件中设置为"server.httpAuth.passwordHash",作为环境变量"HTTP_PASSWORD_HASH",或在命令行中使用--http-auth-password-hash参数设置。
在Docker镜像中运行时,可以通过环境变量HTTP_PASSWORD_HASH_FILE设置包含此密码哈希的文件。
要将此镜像用作其他镜像的基础镜像,您需要在Dockerfile中先执行"apk update",然后再使用"apk add foo"添加其他apk包。之后,为减小镜像大小,您可以像此Dockerfile一样删除所有临时apk配置。
来自真实用户的反馈,见证轩辕镜像的优质服务