Docker部署Redis自定义配置文件未生效问题咨询
Redis自定义配置未生效的原因及解决办法
核心原因
你的配置未生效主要有两个问题:
- 挂载路径错误:你将宿主机的
redis.conf挂载到了容器内的/usr/local/etc/redis,但这个路径在Redis官方镜像中是一个目录,不是文件。挂载后容器内的/usr/local/etc/redis会被替换成宿主机的redis.conf文件,Redis无法识别这个“伪装成目录的文件”作为配置源。 - 未指定加载自定义配置:Redis默认启动时不会自动读取自定义路径的配置文件,必须显式告诉
redis-server要加载的配置文件路径。
修正方案
修改docker-compose.yml中的Redis服务配置,调整挂载路径并指定启动命令:
redis: restart: always image: redis:latest container_name: redis command: redis-server /usr/local/etc/redis/redis.conf volumes: - redis-data:/data - ./redis.conf:/usr/local/etc/redis/redis.conf
说明
- 挂载路径修正:将宿主机的
redis.conf挂载到容器内的/usr/local/etc/redis/redis.conf(文件路径,而非目录),确保容器能正确识别这是一个配置文件。 - 指定启动命令:通过
command: redis-server /usr/local/etc/redis/redis.conf,让Redis启动时加载你挂载的自定义配置文件,这样配置里的bind 0.0.0.0和requirepass foobar就会生效。
验证方法
启动容器后,查看日志是否再出现no config file specified的警告,同时可以通过redis-cli连接测试密码是否生效:
# 进入容器 docker exec -it redis redis-cli # 尝试执行命令,会提示需要认证 127.0.0.1:6379> ping (error) NOAUTH Authentication required. # 使用配置的密码认证 127.0.0.1:6379> AUTH foobar OK # 再次执行命令验证 127.0.0.1:6379> ping PONG
内容的提问来源于stack exchange,提问作者rediz
相关产品推荐
相关产品推荐

