You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OTP Docker容器启动报Redis认证错误:如何设置密码?

解决Docker容器中OTP服务启动的Redis认证错误

嘿,我来帮你拆解下这个问题:

从日志里的核心错误 ERR Client sent AUTH, but no password is set 就能看出来——你的OTP服务已经生成了Redis密码(日志里的e2ee2e4e2ba560ee9e95d32d947c74f33a259e02),并且尝试用这个密码去连接Redis,但Redis本身根本没启用密码认证,所以拒绝了客户端的AUTH请求,导致服务启动失败。

简单说就是:生成的密码只告诉了OTP服务,没同步给Redis实例。

接下来给你几个具体的解决方向:

1. 单容器场景的配置修正

如果你的OTP服务和Redis打包在同一个容器里,大概率是启动脚本的顺序或配置遗漏了:

  • 找到容器内的Redis配置文件(通常路径是/etc/redis/redis.conf,或项目自带的配置路径),确认是否存在requirepass配置项;
  • 查看项目的启动脚本(比如entrypoint.sh),检查是不是在生成Redis密码后,没把密码写入Redis配置就直接启动了Redis;
  • 可以在启动脚本里添加一行,自动把生成的密码注入Redis配置,要确保这行命令在启动Redis前执行:
    echo "requirepass $REDIS_PASSWORD" >> /path/to/your/redis.conf
    

2. 多容器(Docker Compose)场景的配置修正

如果你用Docker Compose把OTP服务和Redis分成两个容器部署,需要确保两边的密码完全一致:

  • 在Redis服务的配置里,通过command参数直接设置密码:
    services:
      redis:
        image: redis:latest
        command: redis-server --requirepass e2ee2e4e2ba560ee9e95d32d947c74f33a259e02
      otp-service:
        build: .
        environment:
          - REDIS_PASSWORD=e2ee2e4e2ba560ee9e95d32d947c74f33a259e02
    
  • 这样Redis启动时会自动启用密码认证,OTP服务也能带着正确的密码连接。

3. 临时测试验证

你可以手动进入容器快速验证问题:

  1. 进入运行中的容器:
    docker exec -it <你的容器ID> bash
    
  2. 先启动带密码的Redis:
    redis-server --requirepass e2ee2e4e2ba560ee9e95d32d947c74f33a259e02
    
  3. 另开一个终端进入容器,启动OTP服务,如果不再报错,就说明确实是Redis未配置密码导致的问题。

内容的提问来源于stack exchange,提问作者Tara Prasad Gurung

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:25:17