2017-11-15 5 views
0

Ich bin eine App auf Knoten und Redis über Docker compose Reagieren läuft:Knoten kann nicht auf Redis über Docker Compose verbinden

version: "3" 
services: 
    webapp: 
    build: ./ 
    ports: 
     - "127.0.0.1:3000:9090" 
    depends_on: 
     - redis 
    command: 
     npm run start 

    nginx: 
    build: ./nginx 
    ports: 
     - "80:80" 
    environment: 
     - NGINX_HOST=127.0.0.1 
     - NGINX_PORT=80 
    command: 
     service nginx start 

    redis: 
    image: redis 
    ports: 
     - "6379:6379" 
    volumes: 
     - ./data:/data 

Docker-Datei:

FROM node:alpine 

WORKDIR /usr/src/app 

COPY package.json ./ 

RUN npm install 
COPY . . 

EXPOSE 9090 
RUN npm run build_prod 

Server.js:

const redisClient = RedisClient.createClient(6379,'redis'); 

ich ein Redis Verbindungsfehler verweigert, wenn ich docker-komponieren bis --build laufen:

redis_1 | 1:M 15 Nov 13:55:19.865 * Ready to accept connections 
webapp_1 | 
webapp_1 | > [email protected] start /usr/src/app 
webapp_1 | > node ./build/server.js 
webapp_1 | 
webapp_1 | events.js:193 
webapp_1 |  throw er; // Unhandled 'error' event 
webapp_1 |  ^
webapp_1 | 
webapp_1 | Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED 127.0.0.1:6379 
webapp_1 |  at Object._errnoException (util.js:1031:13) 
webapp_1 |  at _exceptionWithHostPort (util.js:1052:20) 
webapp_1 |  at TCPConnectWrap.afterConnect [as oncomplete] 

Ich würde gerne wissen, wie Docker erhalten, beide Container richtig zu verknüpfen.

Antwort

1

Sieht aus wie redis wird nicht auf die richtige IP-Adresse aufgelöst.

Versuchen Sie einen redis URI beim Erstellen des Clients.

// [redis:]//[[user][:[email protected]]][host][:port][/db-number][?db=db-number[&password=bar[&option=value]]] 
const redisClient = RedisClient.createClient('redis://redis:6379'); 

Geben Sie gegebenenfalls den Benutzernamen, das Kennwort und die DB-Nummer an.

Verwandte Themen