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

Node.js/Docker容器连接Redis失败,同网络仍报ECONNREFUSED错误求助

问题解决办法

核心错误:Redis主机配置错误

你的Node.js代码里把Redis主机设成了redis-net,这是Docker网络的名称,不是Redis容器的主机名。在同一Docker网络中,容器之间通过服务名(即docker-compose.yaml里services下的键名)互相访问,正确的主机名应该是redis。

修改Node.js代码:

const host = 'redis' // 这里改成服务名redis
const port = 6379
const redisClient = redis.createClient({port: port, host: host})

额外排查点

  • 检查Redis容器状态:执行docker-compose logs redis,确认日志里出现Ready to accept connections,说明Redis服务正常启动。
  • 适配Redis客户端版本:如果使用的是redis@4.x及以上版本,旧的host/port配置参数已被废弃,需要改用新格式:
    // 方式1:使用URL
    const redisClient = redis.createClient({ url: 'redis://redis:6379' })
    // 方式2:使用socket配置
    const redisClient = redis.createClient({ socket: { host: 'redis', port: 6379 } })
    
  • 确保启动顺序:在docker-compose.yaml的nodejs服务中添加depends_on,保证Node容器在Redis容器之后启动(注意:仅保证启动顺序,不保证Redis服务完全就绪):
    nodejs:
      build:
        context: ./
      container_name: nodejs
      restart: unless-stopped
      ports:
        - "3000:3000"
      networks:
        - redis-net
      depends_on:
        - redis # 添加这一行
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 22:25:41