Solusi terbaik adalah dengan menggunakan docker compose. Dengan ini, Anda akan membuat wadah redis, menautkannya, lalu memulai aplikasi node.js Anda. Hal pertama yang harus dilakukan adalah menginstal komposisi buruh pelabuhan yang dirinci di sini - (https://docs.docker.com/compose/install/).
Setelah Anda menjalankannya, Anda harus membuat docker-compose.yml di folder yang sama dengan dockerfile aplikasi Anda. Itu harus berisi yang berikut
version: '3'
services:
myapp:
build: .
ports:
- "3011:3011"
links:
- redis:redis
redis:
image: "redis:alpine"
Kemudian redis akan dapat diakses dari aplikasi node.js Anda, bukan dari localhost:6379
anda akan menggunakan redis:6379
untuk mengakses instance redis.
Untuk memulai aplikasi Anda, Anda akan menjalankan docker-compose up
, di terminal Anda. Praktik terbaik adalah menggunakan network
alih-alih links
tapi ini dibuat untuk kesederhanaan.
Ini juga dapat dilakukan sesuai keinginan, memiliki redis dan node.js pada gambar yang sama, Dockerfile berikut akan berfungsi, ini didasarkan pada apa yang ada dalam pertanyaan:
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"
Metode kedua ini adalah praktik yang sangat buruk dan saya telah menggunakan secara bersamaan alih-alih supervisor atau alat serupa untuk kesederhanaan. Tidur di CMD adalah untuk memungkinkan redis dimulai sebelum aplikasi benar-benar diluncurkan, Anda harus menyesuaikannya dengan yang paling cocok untuk Anda. Semoga ini bisa membantu dan Anda menggunakan metode pertama karena ini adalah latihan yang jauh lebih baik