sql >> Database >  >> NoSQL >> Redis

Redis uitvoeren op nodejs Docker-afbeelding

De beste oplossing zou zijn om Docker Compose te gebruiken. Hiermee zou je een redis-container maken, ernaar linken en vervolgens je node.js-app starten. Het eerste zou zijn om docker compose te installeren dat hier wordt beschreven - (https://docs.docker.com/compose/install/).

Als je het eenmaal in gebruik hebt, moet je een docker-compose.yml maken in dezelfde map als het dockerbestand van je app. Het moet het volgende bevatten

version: '3'
services:
  myapp:
    build: .  
    ports:
     - "3011:3011"
    links:
     - redis:redis
  redis:
    image: "redis:alpine"

Dan is redis toegankelijk vanuit uw node.js-app, maar in plaats van localhost:6379 je zou redis:6379 . gebruiken om toegang te krijgen tot de redis-instantie.

Om uw app te starten, voert u docker-compose up . uit , in uw terminal. Best practice zou zijn om een ​​network . te gebruiken in plaats van links maar dit is gemaakt voor de eenvoud.

Dit kan ook naar wens worden gedaan, met zowel redis als node.js op dezelfde afbeelding, het volgende Dockerfile zou moeten werken, het is gebaseerd op wat er in de vraag staat:

FROM node:carbon

RUN wget http://download.redis.io/redis-stable.tar.gz && \
    tar xvzf redis-stable.tar.gz && \
    cd redis-stable && \
    make && \
    mv src/redis-server /usr/bin/ && \
    cd .. && \
    rm -r redis-stable && \
    npm install -g concurrently   

EXPOSE 6379

WORKDIR /app

COPY package.json /app

RUN npm install

COPY . /app

EXPOSE 3011

EXPOSE 6379

CMD concurrently "/usr/bin/redis-server --bind '0.0.0.0'" "sleep 5s; node /app/src/server.js" 

Deze tweede methode is echt een slechte gewoonte en ik heb voor de eenvoud gelijktijdig gebruikt in plaats van supervisor of soortgelijke tool. De slaapstand in de CMD is om redis te laten starten voordat de app daadwerkelijk wordt gelanceerd, je moet deze aanpassen aan wat het beste bij je past. Ik hoop dat dit helpt en dat je de eerste methode gebruikt, omdat dit veel beter is



  1. Java Garbage Collection afstemmen voor HBase

  2. MongoDB $switch

  3. Paginafouten in MongoDB oplossen

  4. MongoDB $oid versus ObjectId