सबसे अच्छा समाधान डॉकटर कंपोज़ का उपयोग करना होगा। इसके साथ आप एक रेडिस कंटेनर बनाएंगे, उससे लिंक करेंगे और फिर अपना नोड.जेएस ऐप शुरू करेंगे। पहली बात यह होगी कि यहां विस्तृत रूप से डॉकर कंपोज़ स्थापित करें - (https://docs.docker.com/compose/install/)।
एक बार जब आप इसे चालू कर लेते हैं, तो आपको अपने ऐप के dockerfile के समान फ़ोल्डर में docker-compose.yml बनाना चाहिए। इसमें निम्नलिखित शामिल होने चाहिए
version: '3'
services:
myapp:
build: .
ports:
- "3011:3011"
links:
- redis:redis
redis:
image: "redis:alpine"
फिर रेडिस को आपके नोड.जेएस ऐप से एक्सेस किया जा सकेगा, लेकिन इसके बजाय localhost:6379 आप उपयोग करेंगे redis:6379 रेडिस इंस्टेंस तक पहुँचने के लिए।
अपना ऐप शुरू करने के लिए आप docker-compose up run चलाएंगे , आपके टर्मिनल में। एक network . का उपयोग करना सबसे अच्छा अभ्यास होगा links . के बजाय लेकिन यह सादगी के लिए बनाया गया था।
यह वांछित के रूप में भी किया जा सकता है, एक ही छवि पर रेडिस और नोड.जेएस दोनों होने पर, निम्नलिखित डॉकरफाइल काम करना चाहिए, यह प्रश्न में क्या है पर आधारित है:
FROM node:carbon
RUN wget https://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"
यह दूसरी विधि वास्तव में खराब अभ्यास है और मैंने सरलता के लिए पर्यवेक्षक या समान उपकरण के बजाय समवर्ती रूप से उपयोग किया है। सीएमडी में नींद ऐप के वास्तव में लॉन्च होने से पहले रेडिस को शुरू करने की अनुमति देने के लिए है, आपको इसे सबसे अच्छा सूट करने के लिए समायोजित करना चाहिए। आशा है कि यह मदद करता है और आप पहली विधि का उपयोग करते हैं क्योंकि यह बहुत बेहतर अभ्यास है