मैं डॉकरफाइल में एक टिप्पणी कैसे कर सकता हूं?


405

मैं एक डॉकरफाइल लिख रहा हूं। क्या इस फ़ाइल में टिप्पणी करने का कोई तरीका है?

क्या डॉकर के पास एक टिप्पणी विकल्प है जो एक पंक्ति के बाकी हिस्सों को लेता है और इसे अनदेखा करता है?

जवाबों:


514

आप लाइन के रूप में # का उपयोग लाइन टिप्पणी करने के लिए शुरू कर सकते हैं

# Everything on this line is a comment

नोट: # एक टिप्पणी के रूप में केवल लाइन की शुरुआत में इस्तेमाल किया जा सकता है ।


8
तो दूसरे प्रश्न का उत्तर, "क्या डॉकर के पास एक टिप्पणी विकल्प है जो बाकी पंक्ति लेता है और इसे अनदेखा करता है?" , कोई नहीं? " डॉकर उन पंक्तियों को मानता है जो एक टिप्पणी के रूप में # से शुरू होती हैं "
पीटर मोर्टेंसन

1
क्या आप अपना उत्तर अपडेट कर सकते हैं और इसे अधिक व्यापक / पूर्ण बना सकते हैं? मसलन, दूसरे सवाल का जवाब देना।
पीटर मोर्टेंसन

7
BMitch का जवाब महत्वपूर्ण जानकारी भरता है जो इस उत्तर में गायब है।
जोनाथन

99

जैसा कि दूसरों ने उल्लेख किया है, टिप्पणियों का संदर्भ यहां दिया गया है# और यहां दस्तावेज हैं । हालांकि, कुछ भाषाओं के विपरीत, #लाइन की शुरुआत में होना चाहिए। यदि वे लाइन के माध्यम से भाग लेते हैं, तो उन्हें एक तर्क के रूप में व्याख्या की जाती है और परिणामस्वरूप अप्रत्याशित व्यवहार हो सकता है।

# This is a comment

COPY test_dir target_dir # This is not a comment, it is an argument to COPY

RUN echo hello world # This is an argument to RUN but the shell may ignore it

यह भी ध्यान दिया जाना चाहिए कि पार्सर निर्देश हाल ही में डॉकरफाइल में जोड़े गए हैं जो एक टिप्पणी के रूप में एक ही वाक्यविन्यास है। उन्हें किसी अन्य टिप्पणी या आदेश से पहले फ़ाइल के शीर्ष पर दिखाई देना चाहिए। मूल रूप से, इस निर्देश को विंडोज का समर्थन करने के लिए भागने के चरित्र को बदलने के लिए जोड़ा गया था:

# escape=`

FROM microsoft/nanoserver
COPY testfile.txt c:\
RUN dir c:\

पहली पंक्ति, जबकि यह एक टिप्पणी प्रतीत होती है, भागने वाले चरित्र को बैकटिक में बदलने के लिए एक पार्सर निर्देश है ताकि COPYRUN पथ में बैकस्लैश का उपयोग और आदेश कर सकें। एक पार्सर निर्देश का उपयोग बिल्डकिट के साथ एक syntaxपंक्ति के साथ फ्रंटेंड पार्सर को बदलने के लिए भी किया जाता है । व्यवहार में इसका उपयोग कैसे किया जा रहा है, इस बारे में अधिक जानकारी के लिए प्रायोगिक वाक्यविन्यास देखें ।

एक बहु-पंक्ति कमांड के साथ, टिप्पणी की गई रेखाओं को अनदेखा किया जाता है, लेकिन आपको प्रत्येक पंक्ति को व्यक्तिगत रूप से टिप्पणी करने की आवश्यकता है:

$ cat Dockerfile
FROM busybox:latest
RUN echo first command \
# && echo second command disabled \
 && echo third command

$ docker build .
Sending build context to Docker daemon  23.04kB
Step 1/2 : FROM busybox:latest
 ---> 59788edf1f3e
Step 2/2 : RUN echo first command  && echo third command
 ---> Running in b1177e7b563d
first command
third command
Removing intermediate container b1177e7b563d
 ---> 5442cfe321ac
Successfully built 5442cfe321ac

3
"लाइन की शुरुआत में होना चाहिए" का उल्लेख करने के लिए +1 । लाइन निरंतरता के बारे में क्या? यदि एक टिप्पणी लाइन \ _ से समाप्त होती है, तो क्या अगली पंक्ति भी एक टिप्पणी होगी? दूसरे शब्दों में, यदि एक मल्टी-लाइन कमांड पर टिप्पणी की जानी थी, तो क्या सभी लाइनों को #केवल पहली पंक्ति के साथ शुरू करने की आवश्यकता होगी ? एक प्रयोग बताता है कि यह पूर्व है। इस उत्तर को कवर करने के लिए अद्यतन किया जा सकता है और साथ ही (इसे और भी भयानक बना सकते हैं)।
पीटर मोर्टेंसन

1
@PeterMortensen प्रत्येक पंक्ति पर टिप्पणी की आवश्यकता है, docker ने लाइनफीड तक सब कुछ पूरी तरह से अनदेखा कर दिया है। मेरे लिए दिलचस्प बात यह है कि मल्टी-लाइन कमांड टिप्पणियों के पार हो सकती है।
बीएमच

19

#टिप्पणियों के लिए वाक्यविन्यास का उपयोग करें

प्रेषक: https://docs.docker.com/engine/reference/builder/#format

# My comment here
RUN echo 'we are running some cool things'

2
लेकिन क्या हम RUN, COPY, MAINTAINER, आदि के रूप में एक ही लाइन पर टिप्पणी कर सकते हैं?
अलेक्जेंडर मिल्स

@AlexanderMills हाँ डॉक्स के अनुसार मैं इनलाइन टिप्पणियों से जुड़ा हूं, मान्य हैं ADD . $foo # ADD . /bar
edhurtig

2
@AlexanderMills ने ध्यान दिया कि लाइन के अंत में टिप्पणी बदलने से docker बिल्ड पर उस लाइन को फिर से चलाना होगा, क्योंकि "लाइन बदल गई है"। यह उपयोगी और / या कष्टप्रद हो सकता है
Phylliida

बहुत अच्छी बात, शायद डॉकटर को टिप्पणी पर ध्यान नहीं देना चाहिए
अलेक्जेंडर मिल्स

यह एक विशेषता और बग दोनों है, मुझे लगता है कि डॉकटर इसे एक विशेषता पर विचार करेगा, और मुझे लगता है कि वास्तव में समझ में आता है
अलेक्जेंडर मिल्स

4

पाइथन की तरह ही डॉकरीफाइल टिप्पणियाँ '#' से शुरू होती हैं। यहाँ एक अच्छा उदाहरण है ( kstaken / dockerfile उदाहरण ):

# Install a more-up-to date version of MongoDB than what is included in the default Ubuntu repositories.

FROM ubuntu
MAINTAINER Kimbro Staken

RUN apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
RUN echo "deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen" | tee -a /etc/apt/sources.list.d/10gen.list
RUN apt-get update
RUN apt-get -y install apt-utils
RUN apt-get -y install mongodb-10gen

#RUN echo "" >> /etc/mongodb.conf

CMD ["/usr/bin/mongod", "--config", "/etc/mongodb.conf"] 

हां, लेकिन पाइथन के विपरीत लाइन की शुरुआत में एक कमांड के साथ बाकी लाइन नहीं है? आप अपना उत्तर अपडेट करना चाह सकते हैं।
पीटर मोर्टेंसन

बस एक नोट: MAINTAINER पदावनत किया जाता है, अब लेबल का उपयोग करने की सलाह दी जाती है:LABEL maintainer="foo@abc.com"
अलेक्सी मार्टीनोव

2

स्वरूप

यहाँ का प्रारूप है Dockerfile:

हम उदाहरण के #लिए टिप्पणी उद्देश्य के #Commentलिए उपयोग कर सकते हैं

#FROM microsoft/aspnetcore
FROM microsoft/dotnet
COPY /publish /app
WORKDIR /app
ENTRYPOINT ["dotnet", "WebApp.dll"]

उपरोक्त फ़ाइल से जब हम डॉकटर का निर्माण करते हैं, यह पहली पंक्ति को छोड़ देता है और अगली पंक्ति में जाता है क्योंकि हमने इसका उपयोग करते हुए टिप्पणी की है #


2

डॉकर उन पंक्तियों को मानता है जो एक टिप्पणी के रूप में # से शुरू होती हैं , जब तक कि रेखा एक वैध पार्सर निर्देश नहीं है। एक लाइन में कहीं और एक # मार्कर को एक तर्क के रूप में माना जाता है।

उदाहरण:

# this line is a comment

RUN echo 'we are running some # of cool things'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.