Dockerfileでコメントを作成するにはどうすればよいですか?


407

私はDockerfileを書いています。このファイルにコメントを付ける方法はありますか?

Dockerには、残りの行を無視するコメントオプションがありますか?

回答:


517

#を行の先頭として使用して、行にコメントを付けることができます

# Everything on this line is a comment

注:コメントとしてのは、行の先頭でのみ使用できます。


9
したがって、2番目の質問に対する答えは、「Dockerには、残りの行を無視してそれを無視するコメントオプションがありますか?」、違いますか?Dockerは#で始まる行をコメントとして扱います。
Peter Mortensen

1
回答を更新して、より包括的/完全にすることができますか?たとえば、2番目の質問に答えます。
Peter Mortensen

8
BMitchの回答には、この回答に欠けている重要な情報が含まれています。
ジョナサン

99

他の人が述べたように、コメントはa #で参照され、ここに記載されています。ただし、一部の言語とは異なり#、は行の先頭にある必要があります。それらが行の途中で発生する場合、それらは引数として解釈され、予期しない動作を引き起こす可能性があります。

# 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

コメントと同じ構文を持つパーサーディレクティブが最近Dockerfileに追加されたことにも注意してください。それらは、他のコメントやコマンドの前に、ファイルの上部に表示される必要があります。当初、このディレクティブは、Windowsをサポートするようにエスケープ文字を変更するために追加されました。

# escape=`

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

最初の行はコメントのように見えますが、エスケープ文字をバックティックに変更して、COPYand RUNコマンドがパスでバックスラッシュを使用できるようにするパーサーディレクティブです。パーサーディレクティブもBuildKitで使用され、フロントエンドパーサーを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は「行の先頭にある必要がある」ことを示します。行の継続についてはどうですか?コメント行が\で終わっている場合、次の行もコメントになりますか?つまり、複数行のコマンドをコメント化する場合、すべての行を#最初の行だけで開始する必要があるのでしょうか、それとも最初の行だけで開始する必要があるのでしょうか。実験はそれが前者であることを示唆しています。この回答は、それをカバーするように更新することもできます(さらに素晴らしいものにします)。
Peter Mortensen

1
@PeterMortensenコメントは各行に必要です。dockerは改行までのすべてを完全に無視します。私にとって興味深いのは、複数行のコマンドが複数のコメントにまたがることができることです。
-BMitch

19

#コメントの構文を使用する

送信元:https : //docs.docker.com/engine/reference/builder/#format

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

2
しかし、RUN、COPY、MAINTAINERなどと同じ行にコメントできますか?
Alexander Mills 2017年

@AlexanderMillsはい、インラインコメントにリンクしたドキュメントによると有効です ADD . $foo # ADD . /bar
edhurtig '30年

2
@AlexanderMillsは、行の最後でコメントを変更すると、「行が変更された」ため、Dockerがdockerビルドでその行を再実行することに注意してください。これは有用であるか、迷惑な場合があります
Phylliida、

非常に良い点、おそらくdockerはコメントlolを無視するべきです
Alexander Mills

これは機能でありバグでもあると思いますが、Dockerはそれを機能と見なすと思います。実際、それは理にかなっていると思います
Alexander Mills

4

Dockerfileのコメントは、Pythonと同じように「#」で始まります。これが良い例です(kstaken / dockerfile-examples):

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

はい、しかし、Pythonとは異なり、行の先頭にコマンドがある行の残りではありませんか?回答を更新してください。
Peter Mortensen

ただのメモ:MAINTAINER 廃止予定です。ラベルを使用することをお勧めします:LABEL maintainer="foo@abc.com"
Alexei Martianov '21

3

Dockerは、行が有効なパーサーディレクティブでない限り、始まる行をコメントとして扱います。行の他の場所にある#マーカーは引数として扱われます。

コード例:

# this line is a comment

RUN echo 'we are running some # of cool things'

出力:

we are running some # of cool things

2

フォーマット

ここにフォーマットがあります Dockerfile:

#コメント目的など#Commentに使用できます

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

上記のファイルからdockerをビルドすると、最初の行をスキップして次の行に進みます。 #

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.