当前位置: 首页 > 面试题库 >

在docker中都无法通过节点应用程序连接到redis

乐正翰
2023-03-14
问题内容

我正在尝试将我的应用程序连接到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"

Docker文件

 FROM node:8.11.2-alpine

 WORKDIR /usr/test-service/

 COPY . /usr/test-service/

 RUN yarn install

 EXPOSE 3000

 CMD ["yarn", "run", "start"]

app.js

const Redis = require('ioredis');
const redis = new Redis();

redis.set('foo', 'bar');
redis.get('foo').then(function (result) {
    console.log(result);
});

我也尝试过redis包装,但仍然无法连接:

 var redis = require("redis"),
     client = redis.createClient();

 client.on("error", function (err) {
     console.log("Error " + err);
 });

得到:

 Error Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED 127.0.0.1:6379

问题答案:

对于该特定项docker-compose.yml,没有redison
127.0.0.1,您应该将其redis用作主机,因为同一Docker网络上的服务能够使用服务名称作为DNS来找到彼此。

const Redis = require('ioredis');
const redis = new Redis({ host: 'redis' });

此外,depends_on
不等待redis容器在启动之前就准备好,它只会首先启动它,因此在启动之前等待app.js或只是在内部处理它是您的工作app.js

io-redis带有重新连接策略,因此您可能需要先尝试一下。



 类似资料:
  • 我正在尝试使用js文件中的以下代码从我的机器上的meteor应用程序连接远程数据库: 将引发以下错误: 错误:EACCES,在object.future.wait处取消链接++os.linux.x86_64+web.browser+web.cordova/meteor-tool-os.linux.x86_64/tools/files.js:1124:24)在object.files.rm_recu

  • 我有一个使用LocalDB并在Windows PC上运行良好的应用程序,但是我试图通过我的mac运行它......我正在努力将应用程序连接到位于docker上的mySQL服务器。我一直在遵循其他指南,例如(https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker?view=sql-server-ver1

  • 问题内容: 我已经在服务器上安装了Kibana 5.4和Elastic search 5.4,我可以通过使用本地计算机上的curl来访问Kibana和Elastic search 我得到以下回应 var hashRoute =’/ app / kibana’; var defaultRoute =’/ app / kibana’; var hash = window.location.hash;

  • 我已经在服务器上安装了Kibana 5.4和Elastic search 5.4,我可以使用 我得到以下回应 var hashRoute='/app/kibana'; var defaultRoute='/app/kibana'; var hash=window.location.hash; if(hash.length){window.location=hashRoute hash;}其他{wi

  • 我是新来的docker和有一个简单的DW(dropwizard)应用程序连接到elasticsearch,其中已经运行在docker使用docker-compose.yml,其中有以下内容。 弹性搜索的Docker-compose.yml 注意:我将8200和8300公开为主机(本地mac系统)上的ES端口 现在,当我在本地主机上运行连接到8200中ES的DW应用程序时,一切都正常了,但现在我正在