আমি কীভাবে একটি ডকফাইলে একটি মন্তব্য করব?


405

আমি একটি ডকফেরাইল লিখছি। এই ফাইলটিতে মন্তব্য করার কোনও উপায় আছে কি?

ডকারের কি এমন একটি মন্তব্য বিকল্প আছে যা বাকী একটি রেখা নিয়ে যায় এবং এটিকে উপেক্ষা করে?

উত্তর:


514

আপনি লাইনটি মন্তব্য করতে লাইনটির শুরুতে # টি ব্যবহার করতে পারেন

# Everything on this line is a comment

দ্রষ্টব্য: # মন্তব্য হিসাবে কেবলমাত্র লাইনের শুরুতে ব্যবহার করা যেতে পারে ।


8
সুতরাং দ্বিতীয় প্রশ্নের উত্তর, "ডকারের কি এমন একটি মন্তব্য বিকল্প আছে যা বাকী একটি লাইন নিয়ে যায় এবং এটিকে উপেক্ষা করে?" , কোন? " ডকার একটি মন্তব্য হিসাবে # দিয়ে শুরু হওয়া লাইনগুলি আচরণ করে "
পিটার মর্টেনসেন 21

1
আপনি কি নিজের উত্তর আপডেট করতে এবং আরও ব্যাপক / সম্পূর্ণ করতে পারেন? উদাহরণস্বরূপ, দ্বিতীয় প্রশ্নের উত্তর দেওয়া।
পিটার মর্টেনসেন 21

7
বিএমচির উত্তরটি এই সমালোচনামূলক তথ্যগুলিতে পূরণ করে যা এই উত্তরটিতে নেই।
জনাথন

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:\

প্রথম লাইনটি কোনও মন্তব্য বলে মনে হচ্ছে, তবে পালানোর চরিত্রটিকে ব্যাকটিকে পরিবর্তন করার পার্সার দিকনির্দেশনা যাতে COPYঅ্যান্ড RUNকমান্ডগুলি ব্যাকস্ল্যাশটিকে পথে ব্যবহার করতে পারে। একটি পার্সার নির্দেশিকা বিল্ডকিট সহ একটি 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 । লাইন ধারাবাহিকতা সম্পর্কে কি? যদি একটি মন্তব্য রেখাটি with দিয়ে শেষ হয়, তবে পরবর্তী পংক্তিতেও কি কোনও মন্তব্য হবে? অন্য কথায়, যদি একটি মাল্টি-লাইন কমান্ডটি মন্তব্য করা হয়, তবে সমস্ত লাইনটি #কেবল প্রথম লাইন দিয়ে শুরু করা দরকার ? একটি পরীক্ষা পরামর্শ দেয় এটি পূর্বের। এই উত্তরটিও কভার করতে আপডেট করা যেতে পারে (এটিকে আরও ভয়ঙ্কর করে তোলে)।
পিটার মর্টেনসেন 21

1
@ পিটারমোরটেনসেন মন্তব্য প্রতিটি লাইনে প্রয়োজন, ডকার লাইনফিড পর্যন্ত সমস্ত কিছু সম্পূর্ণ উপেক্ষা করে। আমার কাছে মজার বিষয় হ'ল মাল্টি-লাইন কমান্ডটি মন্তব্যগুলিতে বিস্তৃত হতে পারে।
বিএমবিচ

19

#মন্তব্যের জন্য বাক্য গঠন ব্যবহার করুন

থেকে: https://docs.docker.com/engine/references/builder/# formatt

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

2
তবে আমরা কি একই লাইনটিতে রুন, কপি, রক্ষণাবেক্ষণকারী, ইত্যাদি হিসাবে মন্তব্য করতে পারি?
আলেকজান্ডার মিলস

@ আলেকজান্ডারমিলস হ্যাঁ যে ডক্সগুলি আমি ইনলাইন মন্তব্যের সাথে সংযুক্ত করেছি সে অনুসারে বৈধ ADD . $foo # ADD . /bar
এডুর্টিগ

2
@ আলেকজান্ডারমিলস লক্ষ করুন যে লাইনের শেষে মন্তব্যটি পরিবর্তন করা ডকারকে সেই লাইনটি ডকার বিল্ডে পুনরায় চালিত করবে, কারণ "লাইন পরিবর্তন হয়েছে"। এটি দরকারী এবং / বা বিরক্তিকর হতে পারে
ফিলিইডা

খুব ভাল কথা, সম্ভবত ডকারের মন্তব্যটি উপেক্ষা করা উচিত lol
আলেকজান্ডার মিলস

এটি একটি বৈশিষ্ট্য এবং বাগ উভয়ই, আমি অনুমান করি যে ডকার এটিকে একটি বৈশিষ্ট্য হিসাবে বিবেচনা করবেন এবং আমি মনে করি এটি বাস্তবে বোধগম্য
আলেকজান্ডার মিলস

4

ডকফেরাইল মন্তব্যগুলি পাইথনের মতোই '#' দিয়ে শুরু হয়। এখানে একটি ভাল উদাহরণ ( কাস্টকেন / ডকফেরফাইল-উদাহরণ ):

# 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"] 

হ্যাঁ, তবে পাইথনের বিপরীতে লাইনের শুরুতে কমান্ড সহ বাকী রেখাটি নেই? আপনি নিজের উত্তরটি আপডেট করতে চাইতে পারেন।
পিটার মর্টেনসেন 21

কেবলমাত্র একটি দ্রষ্টব্য: 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'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.