错误:Redis连接到127.0.0.1:6379失败 - 连接ECONNREFUSED 127.0.0.1:6379

时间:2017-01-02 13:26:17

标签: node.js macos docker redis docker-image

我正在尝试允许我的nodeJs docker镜像与我的redis docker镜像(Mac OS X环境)之间进行通信:

nodeJs Dockerfile:

 1001 0000 (0x90)
+0110 1110 (-0x92) 
 ---------
 1111 1110 (0xFE)

redis Dockerfile:

FROM node:4.7.0-slim
EXPOSE 8100
COPY . /nodeExpressDB
CMD ["node", "nodeExpressDB/bin/www"]

试图连接到redis的nodeJs代码是:

FROM ubuntu:14.04.3
EXPOSE 6379
RUN apt-get update && apt-get install -y redis-server

docker构建步骤:

var redis = require('redis');
var client = redis.createClient();

docker run images步骤流程:

docker build -t redis-docker .
docker build -t node-docker .

ERROR:

docker run -p 6379:6379 redis-docker
docker run -p 8100:8100 node-docker

我应该怎么做才能从node-docker连接到Redis?

7 个答案:

答案 0 :(得分:5)

Redis在一个单独的容器中运行,该容器具有单独的虚拟以太网适配器和运行节点应用程序的容器的IP地址。您需要link两个容器或为它们创建user defined network < / p>

docker network create redis
docker run -d --net "redis" --name redis redis
docker run -d -p 8100:8100 --net "redis" --name node redis-node

然后在节点中连接时指定主机redis,以便redis客户端尝试连接到redis容器而不是默认的localhost

const redis = require('redis')
const client = redis.createClient(6379, 'redis')
client.on('connect', () => console.log('Connected to Redis') )

Docker Compose可以帮助定义多容器设置。

version: '2'
services:
  node:
    build: .
    ports:
    - "8100:8100"
    networks:
    - redis
  redis:
    image: redis
    networks:
    - redis
networks:
  redis:
    driver: bridge

答案 1 :(得分:2)

如果安装了redis,则运行命令

sItemCustomer = "BMW"

然后您将运行您的网站。

答案 2 :(得分:1)

解决方案 const client = redis.createClient({ 主机:“ redis-server”, 端口:6379 })

然后使用=> docker-compose up --build

重新构建docker

答案 3 :(得分:0)

在节点中连接时,请在函数参数中使用redis-docker传递服务器IP。

答案 4 :(得分:0)

您还可以更改/ etc / hosts文件以更新redis容器的dockerip。

使用docker inspect

找到docker ip

答案 5 :(得分:0)

  1. 下载redis服务器。
  2. 运行redis服务器。
  3. 然后运行您的项目。

它应该可以正常工作。这是下载链接:

Github - Redis Download Packages

我希望它能起作用。

答案 6 :(得分:0)

如果可以新建一个redis docker实例,尝试将容器端口映射到主机:

docker run --name some-redis -p 6379:6379 -d redis

docker container start some-redis

现在,您可以启动容器并连接到主机 127.0.0.1

const redis = require("redis");
const client = redis.createClient({
    host: '127.0.0.1',
    port: '6379'
});