2019 जुलाई में, आधिकारिक डॉकटर दस्तावेज़ीकरण:
स्रोत:https://docs.docker.com/compose/compose-file/ #लिंक
समाधान #1 :प्रारंभ से पहले पर्यावरण फ़ाइल
मूल रूप से हम पर्यावरण चर . के साथ फ़ाइल में सभी कॉन्फ़िगरेशन को केंद्रीकृत करते हैं और docker-compose up . से पहले इसे निष्पादित करें
इन परिदृश्यों में निम्नलिखित दृष्टिकोण ने मेरी मदद की:
- आपके docker-compose.yml के बीच जटिल निर्भरता वाले कई कंटेनर हैं
- आपके docker-compose में आपकी कुछ सेवाओं को उसी मशीन में किसी अन्य प्रक्रिया से कनेक्ट करने की आवश्यकता है। यह प्रक्रिया डॉकटर कंटेनर हो सकती है या नहीं।
- आपको कई डॉकटर-कंपोज़ फ़ाइलों जैसे होस्ट, पासवर्ड, आदि के बीच चर साझा करने की आवश्यकता है
कदम
1.- कॉन्फ़िगरेशन को केंद्रीकृत करने के लिए एक फ़ाइल बनाएँ
इस फ़ाइल का नाम हो सकता है:/env/company_environments एक्सटेंशन के साथ या नहीं।
export MACHINE_HOST=$(hostname -I | awk '{print $1}')
export GLOBAL_LOG_PATH=/my/org/log
export MONGO_PASSWORD=mypass
export MY_TOKEN=123456
2.- अपने docker-compose.yml में env वेरिएबल का उपयोग करें
कंटेनर ए
app_who_needs_mongo:
environment:
- MONGO_HOST=$MACHINE_HOST
- MONGO_PASSWORD=$MONGO_PASSWORD
- TOKEN=$MY_TOKEN
- LOG_PATH=$GLOBAL_LOG_PATH/app1
कंटेनर बी
app_who_needs_another_db_in_same_host:
environment:
- POSTGRESS_HOST=$MACHINE_HOST
- LOG_PATH=$GLOBAL_LOG_PATH/app1
3.- अपने कंटेनर शुरू करें
docker-compose कमांड से पहले स्रोत जोड़ें:
source /env/company_environments
docker-compose up -d
समाधान #2 :host.docker.internal
https://stackoverflow.com/a/63207679/3957754
मूल रूप से डॉकर की एक विशेषता का उपयोग करें जिसमें host.docker.internal सर्वर के आईपी के रूप में इस्तेमाल किया जा सकता है जिसमें आपके डॉकटर-कंपोज़ ने कई कंटेनर शुरू किए हैं