如何在Dockerfile中发表评论?

时间:2016-04-19 06:42:06

标签: docker dockerfile

我正在写一个Dockerfile。有没有办法在这个文件中发表评论?

Docker是否有一个注释选项可以占用剩下的一行并忽略它?

7 个答案:

答案 0 :(得分:328)

你可以use # to comment a line

# Everything on this line is a comment

答案 1 :(得分:53)

正如其他人所提到的,评论以#引用,并且是documented here。但是,与某些语言不同,#必须位于行的开头。如果它们在整行中发生,它们将被解释为参数并可能导致意外行为。

# 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

还应该注意,最近已将parser directives添加到Dockerfile中,其语法与注释相同。在任何其他注释或命令之前,它们需要出现在文件的顶部。最初,添加了此指令用于更改转义字符以支持Windows:

# escape=`

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

第一行虽然看似是注释,但它是一个解析器指令,用于将转义字符更改为反引号,以便COPYRUN命令可以使用路径中的反斜杠。解析器指令也与BuildKit一起使用,以使用syntax行更改前端解析器。有关如何在实践中使用它的详细信息,请参阅experimental 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

答案 2 :(得分:15)

使用#语法进行评论

来自:https://docs.docker.com/engine/reference/builder/#format

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

答案 3 :(得分:3)

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

答案 4 :(得分:1)

# this is comment
this isn't comment

是执行此操作的方法。您可以将其放在行中的任何位置,以后出现的所有内容都将被忽略

答案 5 :(得分:0)

格式

这是Dockerfile:

的格式

例如,我们可以使用#进行评论#Comment

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

在构建docker时,从上面的文件中跳过了第一行,转到了下一行,因为我们已经使用#对其进行了注释

答案 6 :(得分:0)

  

Docker将以#开头的行视为注释,除非   line是有效的解析器指令。 行中其他任何地方的#号标记   被视为参数。

     

示例:

# this line is a comment

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