【问题标题】:How can I connect redis running on my machine from my app running in a docker container如何从在 docker 容器中运行的应用程序连接在我的机器上运行的 redis
【发布时间】:2023-03-07 01:55:01
【问题描述】:

我的 nodejs 应用程序在 docker 容器中运行。我正在为使用 redis 的后台服务使用公牛队列。

我的机器上安装了 redis,当我尝试在 pm2 中运行队列时,我无法连接到 redis 这是我的应用程序中 redis 的配置

"redis" : {
    "host": "192.168.1.98",
    "port": "6379"
  }

这是错误

0|stockProcessor  | WARNING: NODE_APP_INSTANCE value of '0' did not match any instance config file names.
0|stockProcessor  | WARNING: See https://github.com/lorenwest/node-config/wiki/Strict-Mode
0|stockProcessor  | Error: connect ECONNREFUSED 127.0.0.1:6379
0|stockProcessor  |     at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1129:14) {
0|stockProcessor  |   errno: 'ECONNREFUSED',
0|stockProcessor  |   code: 'ECONNREFUSED',
0|stockProcessor  |   syscall: 'connect',
0|stockProcessor  |   address: '127.0.0.1',
0|stockProcessor  |   port: 6379
0|stockProcessor  | }
0|stockProcessor  | Error: connect ECONNREFUSED 127.0.0.1:6379
0|stockProcessor  |     at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1129:14) {
0|stockProcessor  |   errno: 'ECONNREFUSED',
0|stockProcessor  |   code: 'ECONNREFUSED',
0|stockProcessor  |   syscall: 'connect',
0|stockProcessor  |   address: '127.0.0.1',
0|stockProcessor  |   port: 6379
0|stockProcessor  | }

配置注入

const Queue = require("bull");
const configR = require("config");

const redisConfig = configR.get("redis");

const constants = require("../constants");

const config = {
  settings: {
    stalledInterval: 5000,
    maxStalledCount: 9999,
    lockDuration: 60000,
    lockRenewTime: 30000
  }
};

const stockQueue = new Queue("stockQueue", redisConfig, config);

感谢任何帮助。 提前致谢

【问题讨论】:

  • 看起来像一个配置错误,因为上面显示您的应用程序正在尝试连接到您的环回接口,而不是您在上面发布的 LAN 地址。请分享您注入所需配置的代码。
  • 在我的配置文件中配置了上面的主机和端口当我记录 redisConfig 变量时,我得到了正确的 IP 和端口。

标签: node.js docker ubuntu redis pm2


【解决方案1】:

如果您检查documentation,看起来constructor 中的第二个参数应该是字符串而不是对象。看起来您可以将您的 redis 配置选项添加到 config 对象以连接到它,或者从您的 redis 配置对象构建一个字符串。

附:我之前没用过牛,所以可能是这里的文档不正确,你的属性传递方式是允许的

【讨论】:

  • 感谢 Bas 指出这一点。现在可以了。
猜你喜欢
  • 1970-01-01
  • 2017-11-03
  • 2022-11-24
  • 1970-01-01
  • 2021-01-05
  • 2020-11-26
  • 2021-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多