Redis
 sql >> Base de données >  >> NoSQL >> Redis

Exécution de redis sur l'image Docker de nodejs

La meilleure solution serait d'utiliser docker compose. Avec cela, vous créez un conteneur Redis, créez un lien vers celui-ci, puis démarrez votre application node.js. La première chose serait d'installer docker compose détaillé ici - (https://docs.docker.com/compose/install/).

Une fois que vous l'avez installé et en cours d'exécution, vous devez créer un docker-compose.yml dans le même dossier que le dockerfile de votre application. Il doit contenir les éléments suivants

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

Redis sera alors accessible depuis votre application node.js mais au lieu de localhost:6379 vous utiliseriez redis:6379 pour accéder à l'instance redis.

Pour démarrer votre application, vous exécuteriez docker-compose up , dans votre terminal. La meilleure pratique serait d'utiliser un network au lieu de links mais cela a été fait pour la simplicité.

Cela peut également être fait comme vous le souhaitez, en ayant à la fois redis et node.js sur la même image, le Dockerfile suivant devrait fonctionner, il est basé sur ce qui est dans la question :

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" 

Cette deuxième méthode est vraiment une mauvaise pratique et j'ai utilisé simultanément au lieu de superviseur ou d'un outil similaire pour plus de simplicité. Le sommeil dans le CMD permet à Redis de démarrer avant le lancement de l'application, vous devez l'ajuster à ce qui vous convient le mieux. J'espère que cela vous aidera et que vous utiliserez la première méthode car c'est une bien meilleure pratique