मेरे मौजूदा सेटअप के रूप में मूल्यांकन किया जा रहा यह की तर्ज पर है:वर्कअराउंड चलाने डोकर करने के लिए "--env-फ़ाइल" आपूर्ति की फ़ाइल नहीं एक डोकर कंटेनर चलाने के लिए उम्मीद
- मैं एक
main.env
फ़ाइल मिल गया है:
# Main export PRIVATE_IP=\`echo localhost\` export MONGODB_HOST="$PRIVATE_IP" export MONGODB_URL="mongodb://$MONGODB_HOST:27017/development"
मेरी सेवा फ़ाइल (नवोदय) में, मैं इस फ़ाइल स्रोत
. /path/to/main.env
फिर मैं
docker run
पर कई-e
के साथ कॉलर के अंदर के प्रत्येक पर्यावरण चर के लिए कॉल करता हूं।docker run -e MONGODB_URL=$MONGODB_URL ubuntu bash
मैं तो
mongodb://localhost:27017/development
बराबर करने के लिए कंटेनर के अंदरMONGODB_URL
उम्मीद होती है: इस मामले में मैं की तरह कुछ कहेंगे। ध्यान दें कि वास्तविकताecho localhost
को वास्तविकPRIVATE_IP
के लिए अमेज़ॅन के एपीआई मेंcurl
द्वारा प्रतिस्थापित किया गया है।
यह थोड़ा सा अनावश्यक हो जाता है जब आप अपने कंटेनर को देने के लिए अधिक से अधिक पर्यावरण चर लगाना शुरू करते हैं। यहां देखने के लिए एक बढ़िया बिंदु है कि पर्यावरण चर को हल करने की आवश्यकता है रन टाइम, जैसे कि curl
पर कॉल या अन्य एनवी चर के संदर्भ में।
समाधान मैं उपयोग करने के लिए उम्मीद कर रही थी है:
- इस जैसे एक
--env-file
पैरामीटर के साथdocker run
बुला:
# Main PRIVATE_IP=\`echo localhost\` MONGODB_HOST="$PRIVATE_IP" MONGODB_URL="mongodb://$MONGODB_HOST:27017/development"
-
फिर
- मेरी
docker run
कमांड कोdocker run --env-file=/path/to/main.env ubuntu bash
में काफी छोटा कर दिया जाएगा (ध्यान में रखें कि मुझे लगभग 12-15 पर्यावरण चर मिलते हैं।
यह वह जगह है जहां मैंने अपनी समस्या को मारा, यह है कि कंटेनर के अंदर कोई भी चर अपेक्षित के रूप में हल नहीं होता है। इसके बजाय मैं अंत:
- PRIVATE_IP = `गूंज localhost`
- MONGODB_HOST =" $ PRIVATE_IP "
- MONGODB_URL =" MongoDB: // $ MONGODB_HOST: 27017/विकास "
मैं निम्न तरीके से दरकिनार कर सकते हैं:
main.env
फ़ाइल सोर्सिंग।- एक फ़ाइल बनाना जिसमें केवल वेरिएबल्स के नाम हैं (जिसका अर्थ है डॉकर पर्यावरण में उनके लिए खोज करेगा)।
- फिर इस फ़ाइल के साथ
--env-file
पर तर्क के रूप मेंdocker run
पर कॉल करें।यह काम करेगा लेकिन इसका मतलब होगा कि मुझे एक की बजाय दो फाइलों को बनाए रखने की आवश्यकता होगी, और वास्तव में वर्तमान स्थिति में सुधार के लिए यह बड़ा नहीं होगा।
मैं क्या पसंद करूंगा कि वेरिएबल्स अपेक्षित रूप से हल हो जाएं।
मैं मिल सकता है कि मेरी के सबसे करीब सवाल यह है: 12factor config approach with Docker
मुझे लगता है कि देखा है कि आपका ' main.env' आपके वर्रों को शाब्दिक तारों के रूप में सेट कर रहा है। क्या आपने '' '' '' '' को हटाने का प्रयास किया है? आप डॉकर यहां कैसे शाब्दिक हैंडल करते हैं, इसके बारे में अधिक पढ़ सकते हैं: https://docs.docker.com/reference/builder/#env – jakenberg