Giải pháp tốt nhất sẽ là sử dụng trình soạn thảo docker. Với điều này, bạn sẽ tạo một vùng chứa redis, liên kết với nó rồi khởi động ứng dụng node.js của bạn. Điều đầu tiên là cài đặt docker soạn chi tiết tại đây - (https://docs.docker.com/compose/install/).
Khi bạn đã thiết lập và chạy nó, Bạn nên tạo một docker-compos.yml trong cùng một thư mục với dockerfile của ứng dụng. Nó phải chứa những điều sau
version: '3'
services:
myapp:
build: .
ports:
- "3011:3011"
links:
- redis:redis
redis:
image: "redis:alpine"
Sau đó, redis sẽ có thể truy cập được từ ứng dụng node.js của bạn nhưng thay vì localhost:6379
bạn sẽ sử dụng redis:6379
để truy cập phiên bản redis.
Để khởi động ứng dụng của mình, bạn sẽ chạy docker-compose up
, trong thiết bị đầu cuối của bạn. Phương pháp hay nhất là sử dụng network
thay vì các liên kết links
nhưng điều này được tạo ra vì sự đơn giản.
Điều này cũng có thể được thực hiện như mong muốn, có cả redis và node.js trên cùng một hình ảnh, Dockerfile sau sẽ hoạt động, nó dựa trên những gì trong câu hỏi:
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"
Phương pháp thứ hai này thực sự không tốt và tôi đã sử dụng đồng thời thay vì người giám sát hoặc công cụ tương tự vì đơn giản. Ngủ trong CMD là cho phép redis bắt đầu trước khi ứng dụng thực sự được khởi chạy, bạn nên điều chỉnh nó cho phù hợp với bạn nhất. Hy vọng điều này sẽ hữu ích và bạn sử dụng phương pháp đầu tiên vì nó thực hành tốt hơn nhiều