2016-10-30 13 views
7

मेरे पास एक डॉकरफ़ाइल है और मैं एपीआई को डिफ़ॉल्ट मान के साथ कॉन्फ़िगर करने योग्य बनाना चाहता हूं।डॉकरफ़ाइल ओवरराइडिंग ENV चर

से socialengine/nginx-स्पा

ENV API_URL स्थानीय होस्ट: नीचे की तरह कुछ के साथ 6007: 6007

तो जब मैं इस छवि को मैं स्थानीय होस्ट ओवरराइड करने के लिए सक्षम होने के लिए चाहते चलाएँ:

डोकर रन -e API_URL = production.com: 6007 ui

यह काम नहीं करता है और मुझे यह कैसे करना है इसके बारे में स्पष्ट स्पष्टीकरण नहीं मिल रहा है।

कोई सलाह?

उत्तर

13

जो आपने वर्णित किया है वह ठीक काम करना चाहिए। यह देखते हुए:

$ cat Dockerfile 
FROM socialengine/nginx-spa 
ENV API_URL localhost:6007 
$ docker build -t ui . 
[...] 

इस पर विचार करें:

$ docker run -it --rm ui env | grep API_URL 
API_URL=localhost:6007 

की तुलना में:

$ docker run -it --rm -e API_URL='production:6007' ui env | grep API_URL 
API_URL=production:6007 

docker run कमांड लाइन पर एक -e VARNAME=varvalue पासिंग एक डिफ़ॉल्ट अपने Dockerfile में सेट पर आ जाएगी।

यदि आप अलग-अलग व्यवहार देख रहे हैं, तो कृपया अपना प्रश्न अपडेट करें कि आप जिस कमांड को चला रहे हैं और संबंधित आउटपुट दिखाएं।

अद्यतन

यहाँ, पूरा उदाहरण है आपके दृश्य मनोरंजन के रिकॉर्ड किया गया:

https://asciinema.org/a/a5a2n3exlyh4jkii4k0ivvqmd

+0

प्रतिक्रिया के लिए धन्यवाद। लेकिन मुझे नहीं लगता कि यह एक वैध डॉकर कमांड है जिसे आपने मुझे दिया है। यह छवि ENV बनाने की कोशिश करता है। – Proximo

+0

उह, क्या? वे पूरी तरह से वैध डॉकर आदेश हैं। ध्यान दें कि दोनों उदाहरणों में छवि का नाम 'ui' है। और वे 'डॉकर रन' कमांड हैं, वे कुछ भी नहीं बनाएंगे। यदि आप कुछ टाइप करना चाहते हैं तो वे एक छवि खींचने का प्रयास कर सकते हैं। – larsks

+1

दिलचस्प, यह काम नहीं किया लेकिन आपके जवाब ने मुझे अपनी समस्या का पता लगाने में मदद की। मैंने आरएनयू अनुभाग में एनएनवी वैरिएबल का उपयोग करने की कोशिश की, जब मुझे इसका इस्तेमाल सीएमडी के रूप में करना चाहिए। अस्पष्ट सवाल के लिए खेद है। Asciinema.org के लिए +1। – Proximo

संबंधित मुद्दे