如何在 Dockerfile 中发表评论?

新手上路,请多包涵

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

Docker 是否有一个注释选项,它会占用一行的其余部分并忽略它?

原文由 kpie 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 595
2 个回答

您可以在行首使用 # 开始 注释(允许在 # 之前使用空格):

 # do some stuff
RUN apt-get update \
    # install some packages
    && apt-get install -y cron

# 在字符串中间的被传递给命令本身,例如:

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

原文由 Ranjeet 发布,翻译遵循 CC BY-SA 4.0 许可协议

正如其他人所提到的,注释用 # 引用,并在 此处记录。但是,与某些语言不同, # 必须位于行首。如果它们出现在该行的中途,它们将被解释为一个参数,并可能导致意外的行为。

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

第一行虽然看起来是注释,但却是一个解析器指令,用于将转义字符更改为反引号,以便 COPYRUN 命令可以在路径中使用反斜杠.解析器指令还与 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

原文由 BMitch 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题