最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Docker 撰写:redis x nodejs 错误:连接 ECONNREFUSED 127.0.0.1:6379,但对 redis 主机执行 nc 会产生成功结果

网站源码admin31浏览0评论

Docker 撰写:redis x nodejs 错误:连接 ECONNREFUSED 127.0.0.1:6379,但对 redis 主机执行 nc 会产生成功结果

Docker 撰写:redis x nodejs 错误:连接 ECONNREFUSED 127.0.0.1:6379,但对 redis 主机执行 nc 会产生成功结果

这是我所关注的概述。

码头工人组成

  redis1:
    image: redis
    ports:
      - '6379:6379'
    container_name: redis1
  
  nodejs:
    build: src
    entrypoint: nodemon tchat/chatServer.js
    volumes:
      - ./src:/src
    ports:
      - 3000:3000
    depends_on:
      - db_pg
      - redis1

nodejs 源代码

代码来自这个文件,配置略有变化。

var conf = {
    port: 3000,
    debug: true,
    dbPort: 6379,
    dbHost: 'redis1',
    dbOptions: {},
    mainroom: 'MainRoom'
};

console.log(conf)

var io = require('socket.io')(server);
var redis = require('socket.io-redis');
io.adapter(redis({ host: conf.dbHost, port: conf.dbPort }));

// var db = require('redis').createClient(conf.dbPort,conf.dbHost);
var db = require('redis').createClient({
    port: conf.dbPort,
    host: conf.dbHost
});

日志

在节点实例上查看后,它告诉有conn refused to 127.0.0.1:6379,即使我指定的主机是redis1。

root@locald:/media/data1/project1/si/halo-dock# docker logs halo-dock_nodejs_1
[nodemon] 2.0.20
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node tchat/chatServer.js`
{
  port: 3000,
  debug: true,
  dbPort: 6379,
  dbHost: 'redis1',
  dbOptions: {},
  mainroom: 'MainRoom'
}
node:internal/process/promises:288
            triggerUncaughtException(err, true /* fromPromise */);
            ^

Error: connect ECONNREFUSED 127.0.0.1:6379
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1494:16)
Emitted 'error' event on Commander instance at:
    at RedisSocket.<anonymous> (/src/tchat/node_modules/@redis/client/dist/lib/client/index.js:390:14)
    at RedisSocket.emit (node:events:513:28)
    at RedisSocket._RedisSocket_connect (/src/tchat/node_modules/@redis/client/dist/lib/client/socket.js:167:18)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
  errno: -111,
  code: 'ECONNREFUSED',
  syscall: 'connect',
  address: '127.0.0.1',
  port: 6379
}

Node.js v18.14.2
[nodemon] app crashed - waiting for file changes before starting...

redis实例

如果我尝试从 nodejs 实例执行它,

netcat
结果就很好。

# instances
CONTAINER ID   IMAGE                       COMMAND                  CREATED         STATUS                      PORTS                                                 NAMES
06ed514c7c37   halo-dock_app-hj-waf        "/docker-entrypoint.…"   5 minutes ago   Up 5 minutes                80/tcp, 0.0.0.0:88->88/tcp, :::88->88/tcp             app-hj-waf
5ae1f25f34cf   halo-dock_nodejs            "nodemon tchat/chatS…"   5 minutes ago   Up 5 minutes                0.0.0.0:3000->3000/tcp, :::3000->3000/tcp, 8889/tcp   halo-dock_nodejs_1
4bc63e62cdfa   postgres:13.1               "docker-entrypoint.s…"   5 minutes ago   Up 5 minutes                0.0.0.0:5432->5432/tcp, :::5432->5432/tcp             db_pg
71fb9d382c12   redis                       "docker-entrypoint.s…"   5 minutes ago   Up 5 minutes                0.0.0.0:6379->6379/tcp, :::6379->6379/tcp             redis1

root@5ae1f25f34cf:/src# nc -vv redis1 6379
Connection to redis1 (172.22.0.2) 6379 port [tcp/redis] succeeded!

这里出了什么问题?如何解决此连接被拒绝的问题?

更新

我尝试用 redis docker 主机的静态 ip 进行更改。但是跟不上127地址?? js 问题还是其他?

[nodemon] app crashed - waiting for file changes before starting...
[nodemon] restarting due to changes...
[nodemon] starting `node tchat/chatServer.js`
{
  port: 3000,
  debug: true,
  dbPort: 6379,
  dbHost: '172.22.0.2',
  dbOptions: {},
  mainroom: 'MainRoom'
}
node:internal/process/promises:288
            triggerUncaughtException(err, true /* fromPromise */);
            ^

Error: connect ECONNREFUSED 127.0.0.1:6379
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1494:16)
Emitted 'error' event on Commander instance at:
    at RedisSocket.<anonymous> (/src/tchat/node_modules/@redis/client/dist/lib/client/index.js:390:14)
    at RedisSocket.emit (node:events:513:28)
    at RedisSocket._RedisSocket_connect (/src/tchat/node_modules/@redis/client/dist/lib/client/socket.js:167:18)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
  errno: -111,
  code: 'ECONNREFUSED',
  syscall: 'connect',
  address: '127.0.0.1',
  port: 6379
}

Node.js v18.14.2
[nodemon] app crashed - waiting for file changes before starting...
回答如下:
发布评论

评论列表(0)

  1. 暂无评论