簡體   English   中英

使用docker-compose設置帶有Redis的節點

[英]Setting up node with redis using docker-compose

我有一個Express應用程序和React應用程序,在后端部分,我正在使用Redis。 我為前端設置了一個Dockerfile,為后端設置了一個。 此外,我設置了docker-compose.yml文件,如下所示:

# Specify docker-compose version.
version: '3'

# Define the services/containers to be run.
services:
  react:
    build: admin
    ports:
      - '3000:3000'

  express:
    build: .
    container_name: api
    ports:
      - '3001:3001'
    depends_on:
      - redis
    links:
      - mongo
      - redis
    environment:
      - REDIS_URL=redis://cache
      - MONGO_URL=mongodb://db/tests

  mongo:
    image: mongo:4
    container_name: db
    ports:
      - '27017:27017'

  redis:
    image: redis:4
    container_name: cache
    ports:
      - '6379:6379'

在后端,我按如下方式調用redisClient

const bluebird = require('bluebird');
const config   = require('config');
const logger   = require('./logger');
const redis    = require('redis');
bluebird.promisifyAll(redis);

const RedisService = function() {
    const redisConnectionString = process.env.REDIS_URL;
    this.client = redis.createClient({ url: redisConnectionString });
    this.client.on('error', (err) => {
        logger.error(err);
    });
};

config在哪里讀取我的config文件夾中的.json文件。 但是,當我運行docker-compose up ,它引發以下錯誤:

express_1  | [2019-06-10T20:14:38.169Z] error: "uncaughtException: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED 127.0.0.1:6379
Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED 127.0.0.1:6379
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1106:14) 

在我從config .json文件中讀取連接字符串的設置中,如何正確地將Redis與docker-compose連接的任何想法?

從日志看來,它似乎嘗試連接到localhost127.0.0.1 )上的REDIS。 express docker容器可以通過服務名稱redis到達REDIS。

嘗試在redisConnectionString中用redis替換localhost 就像是:

redis://[[user][:password@]]redis:6379

希望能解決您的問題。

暫無
暫無

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

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