【问题标题】:ECONNREFUSED when trying to connect to redis via node using docker-compose尝试使用 docker-compose 通过节点连接到 redis 时出现 ECONNREFUSED
【发布时间】:2020-01-06 15:31:41
【问题描述】:

我正在尝试切换到 docker,由于某种原因,我的 Node.js 应用程序无法连接到在 docker 上运行的 redis。

这是我的 docker compose:

version: "3"
services:
  chatty-backend:
    container_name: chatty-backend
    build: ./
    volumes:
      - ./:/usr/src/chatty-backend
    command: npm start
    working_dir: /usr/src/chatty-backend
    ports:
      - "5000:5000"
    links:
      - redis
      - mongo
    depends_on:
      - redis
      - mongo

  mongo:
    image: mongo:bionic
    ports:
      - "27017:27017"

  redis:
    image: redis
    ports:
      - "6379:6379"
    command:
      redis-server

这是我连接到 redis 的地方:

import * as Redis from 'ioredis';

const redis = new Redis({ host: 'redis', port: 6379 });

export default redis;

也试过new Redis('redis://redis:6379')

我目前收到此错误:

 Error: connect ECONNREFUSED 127.0.0.1:6379
   at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1056:14) {
     errno: 'ECONNREFUSED',
     code: 'ECONNREFUSED',
     syscall: 'connect',
     address: '127.0.0.1',
     port: 6379 
}

【问题讨论】:

  • 据我记得,docker compose v3 不推荐使用链接。尝试在 `chatty-backend` 服务定义中不使用链接设置运行。另外,当您在 docker 容器中启动应用程序时,您是否收到提到的错误?或者当你在主机上启动它时?错误意味着 redis 客户端尝试连接到在 127.0.0.1:6379 上侦听的 redis 服务器,而不是在 redis:6379 上 - 可能,您在 nodejs 应用程序的配置中定义了错误的东西?
  • 我认为链接尚未被弃用,但您应该使用网络而不是链接,因为这是计划中的弃用。但正如您所看到的,chatty-backend 并没有尝试连接到 redis,而是尝试连接到 127.0.0.1,这需要在您的代码中进行修复(它认为它正在连接到本地机器)。

标签: node.js redis docker-compose


【解决方案1】:

graphql-redis-subscriptions引起的问题。 我忘记通过更新的配置了。

【讨论】:

    猜你喜欢
    • 2018-04-28
    • 2019-11-06
    • 2022-12-21
    • 2016-04-16
    • 2020-06-03
    • 2019-03-03
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    相关资源
    最近更新 更多