我正在使用以下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 }
答案 0 :(得分:2)
您需要在nodejs应用程序中将localhost
替换为redis
,以引用您的数据库服务器。
此外,您不需要docker-compose.yml中的“链接”部分。 (即将弃用)
如果您说您已经做过,那么您的容器仍然使用旧图像。因此,请尝试通过移除所有容器和卷来清洁环境,并确保重建映像(docker-compose up --build
)。
应用程序启动时,在该容器中打开一个外壳,并验证您定义数据库名称的文件确实已更新。