sql >> Databasteknik >  >> NoSQL >> Redis

Kör redis på nodejs Docker-bild

Den bästa lösningen skulle vara att använda docker compose. Med detta skulle du skapa en redis-behållare, länka till den och sedan starta din node.js-app. Det första skulle vara att installera docker compose som beskrivs här - (https://docs.docker.com/compose/install/).

När du har det igång, bör du skapa en docker-compose.yml i samma mapp som din app dockerfil. Den bör innehålla följande

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

Då kommer redis att vara tillgänglig från din node.js-app men istället för localhost:6379 du skulle använda redis:6379 för att komma åt redis-instansen.

För att starta din app skulle du köra docker-compose up , i din terminal. Bästa praxis skulle vara att använda ett network istället för links men detta gjordes för enkelhetens skull.

Detta kan också göras efter önskemål, med både redis och node.js på samma bild, bör följande Dockerfil fungera, den är baserad på vad som står i frågan:

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" 

Denna andra metod är riktigt dålig praxis och jag har använt samtidigt istället för handledare eller liknande verktyg för enkelhetens skull. Sömnen i CMD är för att tillåta redis att starta innan appen faktiskt lanseras, du bör anpassa den till det som passar dig bäst. Hoppas detta hjälper och att du använder den första metoden eftersom det är mycket bättre praxis



  1. ställa in utgångsdatum för Hashmap-värden i Redis?

  2. Gruppera resultat med 15 minuters tidsintervall i MongoDb

  3. Hur byter jag namn på fält när jag utför sökning/projektion i MongoDB?

  4. Kan du ansluta till Amazon ElastiСache Redis utanför Amazon?