use*_*726 4 redis node.js docker docker-compose ioredis
我正在尝试将我的应用程序连接到 redis,但我得到:
[ioredis] Unhandled error event: Error: connect ECONNREFUSED 127.0.0.1:6379
当我做:
docker exec -it ed02b7e19810 ping test_redis_1
我收到了所有的数据包。
redis 容器还声明:
* Running mode=standalone, port=6379
* Ready to accept connections
(我收到警告,但我不认为它相关:
Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128
这是我的 docker-compose.yaml:
version: '3'
services:
test-service:
build: .
volumes:
- ./:/usr/test-service/
ports:
- 5001:3000
depends_on:
- redis
redis:
image: "redis:alpine"
Run Code Online (Sandbox Code Playgroud)
文件
FROM node:8.11.2-alpine
WORKDIR /usr/test-service/
COPY . /usr/test-service/
RUN yarn install
EXPOSE 3000
CMD ["yarn", "run", "start"]
Run Code Online (Sandbox Code Playgroud)
应用程序.js
const Redis = require('ioredis');
const redis = new Redis();
redis.set('foo', 'bar');
redis.get('foo').then(function (result) {
console.log(result);
});
Run Code Online (Sandbox Code Playgroud)
我也试过redis包,但仍然无法连接:
var redis = require("redis"),
client = redis.createClient();
client.on("error", function (err) {
console.log("Error " + err);
});
Run Code Online (Sandbox Code Playgroud)
得到:
Error Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED 127.0.0.1:6379
Run Code Online (Sandbox Code Playgroud)
对于那个特定docker-compose.yml的没有redison 127.0.0.1,你应该使用redis作为主机,因为同一个 Docker 网络上的服务能够使用服务名称作为 DNS 找到彼此。
const Redis = require('ioredis');
const redis = new Redis({ host: 'redis' });
Run Code Online (Sandbox Code Playgroud)
此外,在启动之前depends_on 不会等待redis容器准备就绪,它只会首先启动它,因此您的工作是在启动之前等待app.js或在内部处理它app.js
io-redis带有重新连接策略,因此您可能想先尝试一下。
你可以在这里看到我关于这个问题的回答:
等待 node.js 直到 Logstash 准备好使用容器
| 归档时间: |
|
| 查看次数: |
2929 次 |
| 最近记录: |