node.js - Docker、NodeJs、Redis - Redis 正常运行但抛出错误
问题描述
我正在使用以下 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 }
解决方案
您需要在 nodejs 应用程序中替换localhost
为redis
以引用您的数据库服务器。
此外,您不需要 docker-compose.yml 中的“链接”部分。(它将很快被弃用)
如果你说你已经这样做了,那么你的容器仍然使用旧图像。因此,请尝试通过删除任何容器和卷来清理您的环境,并确保镜像已重建 ( docker-compose up --build
)。
当应用程序启动时,在该容器中打开一个 shell 并验证您定义数据库名称的文件是否确实已更新。