使用Docker时,Redis与127.0.0.1:6379的连接失败

时间:2018-02-01 04:46:26

标签: docker redis docker-compose dockerfile

您好我使用docker compose来处理我的所有配置。

我有mongo,node,redis和弹性堆栈。

但是我无法将我的redis连接到我的节点应用程序。

这是我的 docker-compose.yml

version: '2'
services:
  mongo:
    image: mongo:3.6
    container_name: "backend-mongo"
    ports:
      - "27017:27017"
    volumes:
      - "./data/db:/data/db"
  redis:
    image: redis:4.0.7
    ports:
      - "6379:6379"
    user: redis
  adminmongo:
    container_name: "backend-adminmongo"
    image: "mrvautin/adminmongo"
    ports: 
      - "1234:1234"
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.1.1
    container_name: "backend-elastic"
    environment:
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata1:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - esnet
  web:
    container_name: "backend-web"
    build: .
    ports:
     - "8888:8888"
    environment:
     - MONGODB_URI=mongodb://mongo:27017/backend
    restart: always
    depends_on: 
     - mongo
     - elasticsearch
     - redis
    volumes:
     - .:/backend
     - /backend/node_modules
volumes:
  esdata1:
    driver: local
networks:
  esnet:

需要注意的事项:

  • redis已经在运行(我可以ping redis)
  • 我的主机上只能从容器中运行任何服务
  • 其他容器(redis除外)效果很好
  • 我已尝试过以下方法

const redisClient = redis.createClient({host: 'redis'}); const redisClient = redis.createClient(6379, '127.0.0.1'); const redisClient = redis.createClient(6379, 'redis');

我正在使用

  • docker 17.12
  • xubuntu 16.04

如何将我的应用程序连接到我的redis容器?

1 个答案:

答案 0 :(得分:1)

添加 hostname: redis

在redis部分修复此问题。

所以它会是这样的,

redis:
    image: redis:4.0.7
    ports:
      - "6379:6379"
    command: ["redis-server", "--appendonly", "yes"]
    hostname: redis