Dockerfile注释中的#符号是否必须位于第一列?
Dockerfile注释:#号前允许有空格吗?
我之前在社区找过相关问题,但没得到明确答案。翻了Docker官方文档后发现,关于Dockerfile注释的描述确实有点模糊:
Docker treats lines that begin with # as a comment
这里的“begin with”到底是严格要求#在第一列,还是允许前面带空格?我自己本地测试时,带前导空格的#行确实被当作注释了,但还是想找个权威说法。
有意思的是,官方文档对.dockerignore文件的注释规则就写得非常清楚:
If a line in .dockerignore file starts with # in column 1, then this line is considered as a comment and is ignored before interpreted by the CLI.
这种明确的表述反而让人忍不住怀疑,Dockerfile的规则是不是和它不一样?
后来我去查了Docker引擎的源码逻辑,确认了Dockerfile允许#号前存在任意空白字符(空格、制表符)——只要该行的第一个非空白字符是#,就会被识别为注释。
给你举几个有效注释的例子:
# 标准注释写法 # 前面带多个空格的注释 # 前面带制表符的注释
但要注意,如果#号前面有非空白字符,那它就不是注释了,比如下面这行里的#是命令的一部分,不会被忽略:
RUN echo "hello world" # 这不是注释,会被当作命令参数的一部分
简单总结:Dockerfile的注释规则比.dockerignore更宽松,#号前可以有空格或制表符,只要它是该行第一个非空白字符就没问题。
内容的提问来源于stack exchange,提问作者Andy Madge
相关产品推荐
相关产品推荐

