डॉकर कंपोज़ के माध्यम से एक नोडजेएस ऐप को मोंगोडीबी से कनेक्ट करने का प्रयास - मोंगोडब, डॉकर, डॉकर-कंपोज़, डॉकरफ़ाइल

मैं अपने ऐप के साथ एक MongoDB + NodeJS ट्यूटोरियल का अनुसरण कर रहा हूं। सब कुछ डॉकर के बिना काम करता है .. और मैं वास्तव में ऐप को तब तक काम करने के लिए प्राप्त कर सकता हूं जब तक कि इसे MongoDB से कनेक्ट करने की आवश्यकता न हो।

यदि मेरा ऐप MongoDB को नहीं देखता है, तो यह एक त्रुटि और हाल्ट का प्रिंट आउट लेगा।

यहाँ मेरी फाइलें हैं

.env

NODE_VIEWS_PATH=../
NODE_PUBLIC_PATH=../
MONGODB_URI="mongodb://127.0.0.1:27017/myappsdb"
...

Dockerfile

FROM node:carbon

# Create app directory
WORKDIR /usr/src/mahrio

COPY package*.json ./

RUN npm install
# If you are building your code for production
# RUN npm install --only=production

COPY . .

EXPOSE 6085

CMD ["npm", "start"]

डोकर-compose.yml

version: "2"
services:
app:
container_name: someappname
restart: always
build: .
ports:
- "6085:6085"
links:
- mongo
depends_on:
- mongo
mongo:
container_name: mongo
image: mongo
volumes:
- ./tmp:/data/db
ports:
- "27017:27017"

उत्तर:

जवाब के लिए 3 № 1

डॉकटर-कंपोज़ का उपयोग करते समय, एक कंटेनर के लिए दूसरे कंटेनर से कनेक्ट करने के लिए यह कनेक्ट करने के लिए होस्टनाम के रूप में सेवा नाम का उपयोग कर सकता है।

आपके मामले में, नोड ऐप को कनेक्ट करने की आवश्यकता है mongo:27017 बजाय localhost:27017, क्योंकि ऐप कंटेनर के संबंधित से लोकलहोस्ट अपना और अपनी मशीन का उल्लेख करेगा।

इसलिए, मोंगो यूआरएल को बदलें MONGODB_URI="mongodb://mongo:27017/myappsdb"। यह भी सुनिश्चित करें कि आप env फ़ाइल को जोड़कर उपभोग करते हैं:

app:
...
env_file:
- file.env

संबंधित सवाल
सबसे लोकप्रिय