首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误: Redis连接到127.0.0.1:6379失败- connect ECONNREFUSED 127.0.0.1:6379

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

Stack Overflow用户
提问于 2017-01-02 21:26:17
回答 7查看 25.3K关注 0票数 5

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

nodeJs Dockerfile:

代码语言:javascript
复制
FROM node:4.7.0-slim
EXPOSE 8100
COPY . /nodeExpressDB
CMD ["node", "nodeExpressDB/bin/www"]

redis Dockerfile:

代码语言:javascript
复制
FROM ubuntu:14.04.3
EXPOSE 6379
RUN apt-get update && apt-get install -y redis-server

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

代码语言:javascript
复制
var redis = require('redis');
var client = redis.createClient();

docker构建步骤:

代码语言:javascript
复制
docker build -t redis-docker .
docker build -t node-docker .

docker运行图像步骤流:

代码语言:javascript
复制
docker run -p 6379:6379 redis-docker
docker run -p 8100:8100 node-docker

错误:

代码语言:javascript
复制
Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED 127.0.0.1:6379
    at Object.exports._errnoException (util.js:907:11)
    at exports._exceptionWithHostPort (util.js:930:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1078:14)

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

EN

回答 7

Stack Overflow用户

发布于 2017-01-02 22:06:08

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

代码语言:javascript
复制
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

代码语言:javascript
复制
const redis = require('redis')
const client = redis.createClient(6379, 'redis')
client.on('connect', () => console.log('Connected to Redis') )

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

代码语言:javascript
复制
version: '2'
services:
  node:
    build: .
    ports:
    - "8100:8100"
    networks:
    - redis
  redis:
    image: redis
    networks:
    - redis
networks:
  redis:
    driver: bridge
票数 8
EN

Stack Overflow用户

发布于 2017-06-01 15:28:05

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

sudo apt-get install redis-server

然后你就可以让你的网站运行起来。

票数 1
EN

Stack Overflow用户

发布于 2020-10-03 20:34:59

解决方案

代码语言:javascript
复制
const client = redis.createClient({
    host: 'redis-server',
    port: 6379
})

然后使用=> docker -compose up --build重新构建您的docker

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41427756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档