环境:Windows Docker Desktop,Compose 版本 3.9,Redis6.2,带密码认证、数据持久化、健康检查,Redis‑Commander 自动预配置连接,无需网页手动新增连接。
没有密码看下面这个:
Docker Compose 一键部署 Redis + Redis-Commander 可视化管理工具_redis docker-compose 官方推荐-CSDN博客
一、整体说明
- Redis 开启密码访问,禁止无密码访问
- 外部配置文件挂载:
C:/docker/redis/config/redis.conf - Redis 数据持久化存储在 Docker 命名卷
redis-data,容器删除数据不丢失 - Redis‑Commander 使用官方原版镜像,环境变量预配置 Redis 连接,启动即自动连接 Redis
- 自定义桥接网络
my-network,容器间使用容器名做域名通信 - 健康检查监控 Redis 服务状态,redis‑admin 等待 Redis 健康后才启动
二、目录准备
Windows 本地手动创建配置目录,Docker 不会自动生成文件夹:
C:\docker\redis\config在该目录新建配置文件redis.conf,内容如下:
bind 0.0.0.0 port 6379 requirepass Admin@12456789⚠️重点注意:
requirepass密码不要加双引号,引号会被识别为密码一部分,造成认证失败。
三、docker‑compose‑redis.yml 完整配置
# docker compose -f docker-compose-redis.yml up -d # version: '3.9' version: '3.9' services: redis: image: redis:6.2 container_name: redis restart: always hostname: redis ports: - 6379:6379 volumes: - C:/docker/redis/config/redis.conf:/usr/local/etc/redis/redis.conf - redis-data:/data command: redis-server /usr/local/etc/redis/redis.conf networks: - my-network healthcheck: test: ["CMD", "redis-cli", "-a", "Admin@12456789", "ping"] interval: 10s timeout: 5s retries: 3 redis-admin: # 替换为原版redis-commander镜像,不再使用spryker老镜像 image: rediscommander/redis-commander:latest container_name: redis-admin hostname: redis-commander restart: always ports: - 8081:8081 environment: # REDIS_HOSTS格式:名称:host:port:db:password - REDIS_HOSTS=local:redis:6379:0:Admin@12456789 - HTTP_USER=admin - HTTP_PASSWORD=admin networks: - my-network depends_on: redis: condition: service_healthy networks: my-network: driver: bridge volumes: redis-data:配置关键点解读
- redis 服务
volumes:挂载本地 redis 配置文件;redis-data命名卷用于持久化 Redis 数据。command:指定 Redis 加载挂载进来的外部配置文件启动。healthcheck:带密码执行ping检测 Redis 可用性;设置间隔、超时、重试次数。restart: always:docker 重启自动拉起 redis 容器。
- redis‑admin 可视化面板
- 使用官方镜像
rediscommander/redis-commander:latest,摒弃老旧 spryker 镜像,修复密码带特殊字符@解析 bug。 REDIS_HOSTS环境变量预配置 Redis 连接,无需网页手动添加连接;容器内部使用容器名redis作为主机名访问 redis 服务。HTTP_USER / HTTP_PASSWORD:面板登录账号密码。depends_on:等待 redis 服务健康检查通过后,才启动 redis‑admin,避免启动顺序导致连接报错。
- 网络与卷
- 自定义 bridge 网络
my-network,两个服务接入同一网络,容器之间可以用容器名做域名访问。 redis-data命名卷,持久化 Redis 数据,容器销毁数据不会丢失。
四、部署启停命令
在
docker‑compose‑redis.yml所在目录的 PowerShell 执行
停止并销毁旧容器(修改配置后必须执行,清理旧环境变量)
docker compose -f docker-compose-redis.yml down后台启动服务
docker compose -f docker-compose-redis.yml up -d查看容器运行状态
docker compose -f docker-compose-redis.yml ps
查看 redis‑admin 日志,排查连接异常
docker logs redis-admin
五、验证服务
1. 验证 Redis 本身密码连通
docker exec -it redis redis-cli -a Admin@12456789 ping正常返回:PONG,代表 redis 密码认证正常。
2. 访问 Redis‑Commander 可视化面板
浏览器访问:http://127.0.0.1:8081登录账号:admin,密码:admin进入页面会自动加载名为local的 Redis 连接,直接操作 redis 数据,不需要手动新增连接。
六、常见踩坑汇总
- ❌NOAUTH Authentication required
原因:密码配置不一致,conf 文件密码带引号、或者 redis‑admin 环境变量密码写错;conf 文件
requirepass不要写引号。
- ❌redis‑admin 尝试连接localhost:6379
旧 spryker 镜像缺陷,密码包含
@特殊符号解析错乱;解决:切换官方rediscommander/redis-commander:latest镜像。
- ❌健康检查失败
healthcheck 里面
redis‑cli ping没有携带 redis 密码,必须带上‑a 你的密码参数。
- ❌修改 compose 配置后不生效
只执行 up‑d 不会清理旧容器环境,修改 yml 后,必须先执行 down 再 up‑d。
- Windows 挂载配置文件报错找不到文件
C:\docker\redis\config文件夹需要手动创建,Docker 不会自动创建本地文件夹。
七、客户端连接示例
本地 redis‑cli 连接:
redis-cli -h 127.0.0.1 -p 6379 -a Admin@12456789生产环境建议:不要直接把 redis6379 端口暴露公网;定期修改复杂密码;使用 ACL 做细粒度账号权限管理。