【问题标题】:I am running a redis(docker image) on local nodejs application [duplicate]我在本地nodejs应用程序上运行redis(docker image)[重复]
【发布时间】:2019-07-10 18:00:09
【问题描述】:

我正在尝试在本地节点 js 应用程序上使用 redis 连接,但它抛出错误 ---

events.js:183 投掷者; // 未处理的“错误”事件 ^

错误:Redis 连接到 127.0.0.1:6379 失败 - 连接 ECONNREFUSED 127.0.0.1:6379 在 TCPConnectWrap.afterConnect [as oncomplete] (net.js:1191:14)

【问题讨论】:

  • 您的问题不清楚...您需要提供更多详细信息,例如用于 redis 和 node 的 Dockerfile、您尝试运行的命令、您如何启动 docker 容器等。
  • 你连端口都暴露了吗?

标签: node.js docker redis


【解决方案1】:

如果我理解正确,您是在 Docker 容器中运行节点。此节点进程正在尝试访问在 localhost 上运行的 redis 实例。

这样不行,因为容器(节点)有自己的网络栈,127.0.0.1不指向宿主机。

在这种情况下,您需要

  1. 在自己的容器中运行 redis(并使用例如 docker-compose)或
  2. 将 Redis 的 Node 连接主机从 localhost(或 127.0.0.1)更改为您的主机 IP 地址。请参阅How to get the primary IP address of the local machine on Linux and OS X? 查找 IP 地址

【讨论】:

    【解决方案2】:

    您正在尝试连接到错误的端口。正如docker ps 命令所说,redis 正在侦听的端口是32768。连接到该端口应该可以解决您的问题。

    有关自定义端口侦听的更多信息,请参阅the official docker documentation(尤其是标志-p)。

    【讨论】:

    • var redis = require("redis"), redis_client = redis.createClient("redis://127.0.0.1:32768"); - - - - - - - - - - - - - - - - - - - - - - - - - 谢谢这完成了工作!
    • 如果这是正确答案,请将其标记为解决方案!
    【解决方案3】:

    您也可以通过重做 Docker 容器来解决此错误,只需添加“-p 6379: 6379”标志。示例(具有持久日期的 Redis):

    docker run --name some-redis -p 6379:6379 -d redis redis-server --appendonly 是的

    【讨论】:

      猜你喜欢
      • 2021-11-02
      • 1970-01-01
      • 2017-10-15
      • 2019-06-15
      • 2013-01-29
      • 1970-01-01
      • 2020-12-21
      • 2021-10-28
      • 2021-07-01
      相关资源
      最近更新 更多