किसी कारण से यहाँ अधिकांश उत्तर मेरी मदद नहीं कर पाए (हो सकता है कि यह डॉकरीफाइल में मेरी FROM छवि से संबंधित हो)
इसलिए मैंने bash script
अपने कार्यक्षेत्र में संयुक्त रूप से बनाना पसंद किया --build-arg
, ताकि अगर कथन खाली है या नहीं तो जाँच कर बताएं कि तर्क खाली है या नहीं
बैश स्क्रिप्ट:
#!/bin/bash -x
if test -z $1 ; then
echo "The arg is empty"
....do something....
else
echo "The arg is not empty: $1"
....do something else....
fi
Dockerfile:
FROM ...
....
ARG arg
COPY bash.sh /tmp/
RUN chmod u+x /tmp/bash.sh && /tmp/bash.sh $arg
....
डॉकर बिल्ड:
docker build --pull -f "Dockerfile" -t $SERVICE_NAME --build-arg arg="yes" .
टिप्पणी: यह बाश स्क्रिप्ट में अन्य (झूठी) पर जाएगी
docker build --pull -f "Dockerfile" -t $SERVICE_NAME .
टिप्पणी: यह अगर (सच्चा) जाएगा
1 संपादित करें:
कई प्रयासों के बाद भी मैं निम्नलिखित पाया है लेख और इस एक
जो मुझे मदद मिली 2 बातें समझने के लिए:
1) FROM से पहले ARG बिल्ड के बाहर है
2) डिफ़ॉल्ट शेल / बिन / श है जिसका अर्थ है कि यदि डॉक बिल्ड में कुछ अलग काम कर रहा है। उदाहरण के लिए आपको तार की तुलना करने के लिए "==" के बजाय केवल एक "=" की आवश्यकता है।
तो आप अंदर यह कर सकते हैं Dockerfile
ARG argname=false #default argument when not provided in the --build-arg
RUN if [ "$argname" = "false" ] ; then echo 'false'; else echo 'true'; fi
और इसमें docker build
:
docker build --pull -f "Dockerfile" --label "service_name=${SERVICE_NAME}" -t $SERVICE_NAME --build-arg argname=true .