Parser directives

解析器指令

Parser directives

解析器指令是可选的,并且会影响Dockerfile中后续行的处理方式。解析器指令不会在构建中添加镜像层,也不会在构建步骤中显示。解析器指令以#指令=值的形式写为特殊的注释类型。单个指令只能使用一次。

处理完注释,空行或构建器指令后,Docker不再寻找解析器指令,而是将格式化为解析器指令的任何内容都视为注释,并且不会尝试验证它是否可能是解析器指令。因此,所有解析器指令必须位于Dockerfile的最顶部。

解析器指令不区分大小写。但是根据约定是小写的。约定还包括应在任何解析器指令之后包含一个空白行。解析器指令不支持行继续符。

由于这些规则,以下示例均无效:

由于行继续符而无效:

# direc \
tive=value

下面的指令无效的,因为出现了两次

# directive=value1
# directive=value2

FROM ImageName

会被当成注释,因为解析器指令出现在了构建器指令后面

FROM ImageName
# directive=value

会被当成注释,因为解析器指令出现在了注释后面

# About my dockerfile
# directive=value
FROM ImageName

由于无法被识别,未知指令被视为注释。另外,由于在不是解析器指令的注释之后出现,所以已知指令被视为注释。

# unknowndirective=value  #无法被识别,因此当成注释
# knowndirective=valuev  #由于前面的指令备当成了注释,出现在注释后面的解析器指令被当成注释对待。

解析器指令中允许使用不换行的空格。因此,以下各行都被相同地对待:

#directive=value
# directive =value
#    directive= value
# directive = value
#      dIrEcTiVe=value

以下两个指令是支持的解析器指令:

  • syntax

  • escape

Last updated