簡體   English   中英

錯誤:與 127.0.0.1:6379 的 Redis 連接失敗 - 連接 ECONNREFUSED 127.0.0.1:6379

[英]Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED 127.0.0.1:6379

我正在嘗試允許我的 nodeJs docker 映像與我的 redis docker 映像(Mac OS X 環境)之間進行通信:

nodeJs Dockerfile:

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

redis Docker 文件:

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

試圖連接到redis的nodeJs代碼是:

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

docker構建步驟:

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

docker run images 步驟流程:

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

錯誤:

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?

Redis 在一個單獨的容器中運行,該容器具有單獨的虛擬以太網適配器和 IP 地址到您的節點應用程序在其中運行的容器。您需要鏈接這兩個容器或為它們創建一個用戶定義的網絡

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

然后在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

如果安裝了redis然后運行命令

sudo apt-get install redis-server

然后,您將讓您的網站運行。

解決方案

const client = redis.createClient({
    host: 'redis-server',
    port: 6379
})

然后用 => docker-compose up --build重建你的 docker

在節點中連接時,在傳遞服務器 IP 的函數參數中使用redis-docker

如果您可以創建一個新的 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'
});

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

使用 docker inspect 查找 docker ip

  1. 下載redis服務器。
  2. 運行 redis 服務器。
  3. 然后運行你的項目。

它應該工作得很好。 這是下載鏈接:

Github - Redis 下載包

我希望它有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM