Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Redis auf dem Docker-Image von nodejs ausführen

Die beste Lösung wäre die Verwendung von docker compose. Damit würden Sie einen Redis-Container erstellen, darauf verlinken und dann Ihre node.js-App starten. Als erstes müsste Docker Compose installiert werden, das hier beschrieben wird - (https://docs.docker.com/compose/install/).

Sobald Sie es eingerichtet und ausgeführt haben, sollten Sie eine Docker-Compose.yml-Datei im selben Ordner wie die Docker-Datei Ihrer App erstellen. Es sollte Folgendes enthalten

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

Dann ist redis von Ihrer node.js-App aus zugänglich, jedoch anstelle von localhost:6379 Sie würden redis:6379 verwenden um auf die Redis-Instanz zuzugreifen.

Um Ihre App zu starten, führen Sie docker-compose up aus , in Ihrem Terminal. Best Practice wäre die Verwendung eines network statt links aber das wurde der Einfachheit halber gemacht.

Dies kann auch nach Wunsch erfolgen, da sich sowohl redis als auch node.js auf demselben Image befinden, sollte die folgende Dockerfile funktionieren, sie basiert auf der Frage:

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" 

Diese zweite Methode ist wirklich schlechte Praxis und ich habe der Einfachheit halber gleichzeitig anstelle von Supervisor oder einem ähnlichen Werkzeug verwendet. Der Ruhezustand in der CMD dient dazu, dass Redis gestartet werden kann, bevor die App tatsächlich gestartet wird. Sie sollten ihn so anpassen, wie es Ihnen am besten passt. Ich hoffe, das hilft und dass Sie die erste Methode verwenden, da sie viel besser praktiziert wird