web-dev-qa-db-ja.com

エラー:127.0.0.1:6379へのRedis接続に失敗しました-ECONNREFUSED127.0.0.1:6379に接続してください

NodeJsdockerイメージとredisdockerイメージ(Mac OS X環境)間の通信を許可しようとしています:

nodeJs Dockerfile:

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

redis Dockerfile:

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に接続するにはどうすればよいですか?

4
Oron Ben-David

Redisは、ノードアプリケーションが実行されているコンテナーへの個別の仮想イーサネットアダプターとIPアドレスを持つ個別のコンテナーで実行されます。2つのコンテナーを リンク する必要がありますまたは、 ユーザー定義ネットワーク を作成します

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
5
Matt

redisがインストールされている場合は、コマンドを実行します

Sudo apt-get install redis-server

次に、サイトを実行します。

1
Damini Suthar

/ etc/hostsファイルを変更して、redisコンテナーのdockeripを更新することもできます。

Dockerinspectを使用してdockeripを見つけます

0
nevosial
  1. Redisサーバーをダウンロードします。
  2. redisサーバーを実行します。
  3. 次に、プロジェクトを実行します。

それはうまくいくはずです。ダウンロードリンクは次のとおりです。

Github-Redisダウンロードパッケージ

私はそれがうまくいくことを願っています。

0
Quince Ngomane

ノードに接続するときは、サーバーIPを渡す関数の引数でredis-dockerを使用します。

0
Niloct