Docker-compose,Laravel-echo-server和Redis连接问题:[ioredis]未处理的错误事件:错误:连接ECONNREFUSED 172.20.0.2:6379

时间:2018-08-10 19:36:31

标签: docker redis configuration docker-compose laravel-echo

我正在使用PHP,PostgreSQL,Nginx,Laravel-Echo-Server和Redis设置docker堆栈,并且Redis和echo-server连接存在一些问题。我正在使用docker-compose.yml:

version: '3'

networks:
  app-tier:
    driver: bridge
services:
  app:
    build:
      context: .
      dockerfile: .docker/php/Dockerfile
    networks:
      - app-tier
    ports:
      - 9002:9000
    volumes:
      - .:/srv/app
  nginx:
    build:
      context: .
      dockerfile: .docker/nginx/Dockerfile
    networks:
      - app-tier
    ports:
      - 8080:80
    volumes:
      - ./public:/srv/app/public
  db:
    build:
      context: .docker/postgres/
      dockerfile: Dockerfile
    restart: unless-stopped
    networks:
      - app-tier
    ports:
      - 5433:5432
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: secret
    volumes:
      - .docker/postgres/data:/var/lib/postgresql/data
  laravel-echo-server:
    build:
      context: .docker/laravel-echo-server
      dockerfile: Dockerfile
    restart: unless-stopped
    networks:
      - app-tier
    ports:
      - 6001:6001
    links:
      - 'redis:redis'
  redis:
    build:
      context: .docker/redis
      dockerfile: Dockerfile
    restart: unless-stopped
    networks:
      - app-tier
    volumes:
      - .docker/redis/data:/var/lib/redis/data

我的echo服务器Dockerfile:

FROM node:10-alpine

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

COPY package.json /usr/src/app/

RUN apk add --update \
    python \
    python-dev \
    py-pip \
    build-base

RUN npm install

COPY laravel-echo-server.json /usr/src/app/laravel-echo-server.json

EXPOSE 3000
CMD [ "npm", "start" ]

Redis Dockerfile:

FROM redis:latest

LABEL maintainer="maintainer"

COPY . /usr/src/app
COPY redis.conf /usr/src/app/redis/redis.conf

VOLUME /data

EXPOSE 6379

CMD ["redis-server", "/usr/src/app/redis/redis.conf"]

我的laravel-echo-server.json:

{
    "authHost": "localhost",
    "authEndpoint": "/broadcasting/auth",
    "clients": [],
    "database": "redis",
    "databaseConfig": {
        "redis": {
            "port": "6379",
            "host": "redis"
        }
    },
    "devMode": true,
    "host": null,
    "port": "6001",
    "protocol": "http",
    "socketio": {},
    "sslCertPath": "",
    "sslKeyPath": ""
}

redis.conf是当前的默认值。我从laravel-echo-server得到的错误是:

[ioredis] Unhandled error event: Error: connect ECONNREFUSED 172.20.0.2:6379 at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1163:14)

使用配置文件,Redis可以正常运行,并且可以接受连接。 docker ps显示redis和echo-server都已启动,因此它们只是未按错误指示进行连接。如果我将Redis Dockerfile中的最后一行更改为CMD ["redis-server"],它似乎已连接并自动使用默认配置(与我的.docker目录中的默认配置相同),但出现此错误: Possible SECURITY ATTACK detected. It looks like somebody is sending POST or Host: commands to Redis. This is likely due to an attacker attempting to use Cross Protocol Scripting to compromise your Redis instance. Connection aborted.

0 个答案:

没有答案