sql >> Database teknologi >  >> NoSQL >> Redis

Kører redis på nodejs Docker-billede

Den bedste løsning ville være at bruge docker compose. Med dette ville du oprette en redis-beholder, linke til den og derefter starte din node.js-app. Den første ting ville være at installere docker compose beskrevet her - (https://docs.docker.com/compose/install/).

Når du har det oppe at køre, skal du oprette en docker-compose.yml i samme mappe som din apps dockerfil. Den skal indeholde følgende

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

Så vil redis være tilgængelig fra din node.js-app, men i stedet for localhost:6379 du ville bruge redis:6379 for at få adgang til redis-forekomsten.

For at starte din app skal du køre docker-compose up , i din terminal. Bedste praksis ville være at bruge et network i stedet for links men dette blev lavet for nemheds skyld.

Dette kan også gøres som ønsket, med både redis og node.js på det samme billede, bør følgende Dockerfile fungere, den er baseret på hvad der står i spørgsmålet:

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" 

Denne anden metode er virkelig dårlig praksis, og jeg har brugt sideløbende i stedet for supervisor eller lignende værktøj for enkelhedens skyld. Søvnen i CMD'en er for at lade redis starte før appen rent faktisk lanceres, du bør justere den til det der passer dig bedst. Håber dette hjælper, og at du bruger den første metode, da det er meget bedre praksis



  1. MongoDB $trim

  2. MongoDB ikke autoriseret til forespørgsel - kode 13

  3. Installer Memcached på Ubuntu 16.04

  4. Redis aktiv-aktiv replikation