【问题标题】:Docker, NodeJs, Redis - Redis functioning but throwing out errorsDocker、NodeJs、Redis - Redis 正常运行但抛出错误
【发布时间】:2020-05-26 10:59:36
【问题描述】:

我正在使用以下 docker-compose 文件运行 Docker:

version: "2"
services:
  redis:
    image: "redis"
    command: ["redis-server", "--appendonly", "yes"]
    hostname: redis
  vapp:
    build: .
    command: npm run nodemon-test
    container_name: vapp
    volumes:
    - .:/home/tringuyen/app
    - /home/tringuyen/app/node_modules
    - /abi:/abi
    ports:
    - "3000:3000"
    links:
    - redis:redis
    depends_on:
    - redis

一切正常,我可以验证redis正在运行,NodeJs中的redis主机也更新为redis。但是这个错误一直吐出来,有谁知道是什么原因以及如何解决它?谢谢。

vapp         | Uncaught Exception:  { Error: Redis connection to localhost:6379 failed - connect ECONNREFUSED 127.0.0.1:6379
vapp         |     at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14)
vapp         |   errno: 'ECONNREFUSED',
vapp         |   code: 'ECONNREFUSED',
vapp         |   syscall: 'connect',
vapp         |   address: '127.0.0.1',
vapp         |   port: 6379 }

【问题讨论】:

    标签: node.js docker redis docker-compose


    【解决方案1】:

    您需要在 nodejs 应用程序中将 localhost 替换为 redis 以引用您的数据库服务器。

    您也不需要 docker-compose.yml 中的“链接”部分。 (很快就会被弃用)

    如果您说您已经这样做了,那么您的容器仍然使用旧图像。因此,请尝试通过删除任何容器和卷来清理您的环境,并确保重建映像 (docker-compose up --build)。

    当应用程序启动时,在该容器中打开一个 shell 并验证您定义数据库名称的文件是否确实已更新。

    【讨论】:

    • 您好,感谢您的回答,得到了它的工作,错误来自其他地方也调用了redis客户端,那里的主机没有更新为redis
    猜你喜欢
    • 2021-10-22
    • 1970-01-01
    • 2017-09-24
    • 2018-06-08
    • 2017-10-04
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    • 1970-01-01
    相关资源
    最近更新 更多