You need to enable JavaScript to run this app. Redis 6 Docker容器ACL配置未生效的问题求助
优惠活动
大模型
产品
解决方案
定价
更多

Redis 6 Docker容器ACL配置未生效的问题求助

Redis Docker环境下ACL配置不生效的排查与修复

根本原因

当前配置流程缺少关键环节:仅将自定义配置文件复制到镜像中,但没有让Redis启动进程在启动时加载这份自定义配置。
官方redis:6.2.1镜像的默认启动逻辑是直接执行无参数的redis-server,使用镜像内置的默认配置启动服务。你放在镜像内的redis.conf、users.acl从始至终没有被Redis进程读取,因此配置中指定的ACL文件加载逻辑完全没有触发,最终只输出镜像内置的默认default用户规则。

修复步骤

1. 修改Dockerfile,指定启动加载的配置文件路径

在原有Dockerfile的基础上,新增启动指令,明确告诉Redis进程启动时要加载你复制进去的自定义redis.conf,同时补充文件权限配置,避免Redis进程无权限读取ACL规则文件:

FROM redis:6.2.1

COPY redis.conf /usr/local/etc/redis/redis.conf
COPY --chown=redis:redis users.acl /etc/redis/users.acl

EXPOSE 6379
# 新增启动指令,指定加载自定义配置文件
CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]

2. 确认配置路径匹配性

你当前两份配置的路径逻辑是正确的,无需调整:

  • 自定义redis.conf存储路径:/usr/local/etc/redis/redis.conf
  • 自定义redis.conf中声明的ACL文件路径:aclfile /etc/redis/users.acl
  • 镜像中users.acl的实际存储路径:/etc/redis/users.acl

生效验证

重新构建镜像并启动容器后,在容器内执行redis-cli运行ACL LIST,将返回两条用户规则:

1) "user default on nopass ~* &* +@all"
2) "user test on #password ~* &* +@all"

如果看到test用户的配置,就说明ACL已经成功加载。可执行redis-cli --user test --pass password测试自定义用户的登录权限,确认规则符合预期。

新手提示:Redis的配置文件不会被自动扫描加载,无论在什么部署场景下,都需要在启动redis-server时通过参数显式指定配置文件的完整路径,否则所有自定义配置都不会生效。

内容的提问来源于stack exchange,提问作者EM90

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.27 10:36:03