Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Uruchamianie redis na obrazie Docker nodejs

Najlepszym rozwiązaniem byłoby użycie docker compose. Dzięki temu utworzysz kontener redis, połączysz się z nim, a następnie uruchomisz aplikację node.js. Pierwszą rzeczą byłoby zainstalowanie docker compose szczegółowo opisane tutaj - (https://docs.docker.com/compose/install/).

Po uruchomieniu i uruchomieniu należy utworzyć plik docker-compose.yml w tym samym folderze, co plik docker aplikacji. Powinien zawierać następujące

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

Wtedy redis będzie dostępny z Twojej aplikacji node.js, ale zamiast localhost:6379 użyjesz redis:6379 aby uzyskać dostęp do instancji redis.

Aby uruchomić aplikację, uruchom docker-compose up , w terminalu. Najlepszą praktyką byłoby użycie network zamiast links ale to zostało stworzone dla prostoty.

Można to również zrobić w razie potrzeby, mając zarówno redis, jak i node.js na tym samym obrazie, następujący plik Dockerfile powinien działać, oparty na tym, co jest w pytaniu:

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" 

Ta druga metoda jest naprawdę złą praktyką i dla uproszczenia używałem jednocześnie zamiast superwizora lub podobnego narzędzia. Sen w CMD ma pozwolić na uruchomienie redis przed faktycznym uruchomieniem aplikacji, należy dostosować go do tego, co najbardziej Ci odpowiada. Mam nadzieję, że to pomoże i że użyjesz pierwszej metody, ponieważ jest to znacznie lepsza praktyka



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Pytania dotyczące Redis, Node.js i Socket.io

  2. redis bgsave nie powiodło się, ponieważ fork nie może przydzielić pamięci

  3. Co to jest Redis pubsub i jak z niego korzystać?

  4. Strażnicy Redis z TLS

  5. Redis kolejka wiadomości pubsub, ale z wywołaniem zwrotnym, jak w ZeroMQ