Docker,NodeJs,Redis-Redis正常运行但抛出错误

时间:2020-02-11 04:28:23

标签: node.js docker redis docker-compose

我正在使用以下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 }

1 个答案:

答案 0 :(得分:2)

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

此外,您不需要docker-compose.yml中的“链接”部分。 (即将弃用)

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

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