如何在Dockerfile中发表评论?

kpi*_*pie 313 docker dockerfile

我正在写一个Dockerfile,我想知道是否有任何方法可以在这个文件中发表评论?docker是否有一个注释选项,它会占用剩下的一行并忽略它?

Ran*_*eet 414

您可以使用#来评论一条线.

# Everything on this line is a comment
Run Code Online (Sandbox Code Playgroud)

  • 因此,第二个问题的答案是“ * Docker是否具有注释选项,该注释选项将剩下的一行忽略了?” *,是吗?*“ [[Docker将以#开头的行作为注释](https://docs.docker.com/engine/reference/builder/#format)” *。 (4认同)
  • [BMitch的答案](/sf/answers/2948641251/)填写了此答案中缺少的重要信息。 (4认同)
  • 您能否更新您的答案并使其更全面/完整?比如回答第二个问题。 (2认同)
  • 链接到/sf/ask/3749521891/ (2认同)

BMi*_*tch 78

正如其他人所提到的那样,注释用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
Run Code Online (Sandbox Code Playgroud)

还应该注意,解析器指令最近已添加到Dockerfile中,其语法与注释相同.在任何其他注释或命令之前,它们需要出现在文件的顶部.目前,唯一的指令是更改转义字符以支持窗口:

# escape=`

FROM microsoft/nanoserver
COPY testfile.txt c:\
RUN dir c:\
Run Code Online (Sandbox Code Playgroud)

第一行虽然看起来是注释,但它是一个解析器指令,用于将转义字符更改为反引号,以便COPYRUN命令可以使用路径中的反斜杠.

  • +1表示*“必须在行首” *。行继续呢?如果注释行以\结尾,下一行也将成为注释吗?换句话说,如果要注释掉多行命令,是否所有行都需要以“#”开头或仅以第一行开头?实验表明是前者。该答案也可以进行更新以涵盖该问题(使其更加出色)。 (3认同)
  • @PeterMortensen 每行都需要注释,docker 完全忽略换行之前的所有内容。我感兴趣的是多行命令可以跨越注释。 (2认同)

edh*_*tig 17

使用#注释语法

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

# My comment here
RUN echo 'we are running some cool things'
Run Code Online (Sandbox Code Playgroud)

  • 但我们可以评论RUN,COPY,MAINTAINER等同一行吗? (2认同)
  • @AlexanderMills 但是请注意,更改行尾的注释将导致 docker 在 docker build 上重新运行该行,因为“行已更改”。这可能有用和/或令人讨厌 (2认同)

Dhr*_*hak 15

Dockerfile 注释以 开头#,就像 Python 一样。 ktaken 有很好的例子

# 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"] 
Run Code Online (Sandbox Code Playgroud)


Ami*_*aei 7

Docker 会将以开头的#行视为注释,除非该行是有效的解析器指令。行中其他任何位置的标记#都被视为参数。

示例代码:

# this line is a comment

RUN echo 'we are running some # of cool things'
Run Code Online (Sandbox Code Playgroud)

输出:

we are running some # of cool things
Run Code Online (Sandbox Code Playgroud)