gpt4 book ai didi

docker - Dockerfile 注释中的哈希 '#' 是否需要在第 1 列中?

转载 作者:行者123 更新时间:2023-12-01 01:45:13 25 4
gpt4 key购买 nike

我见过How do I make a comment in a Dockerfile? ,它没有回答这个问题。

Docker documentation关于散列在 Dockerfile 中的位置不明确:

Docker treats lines that begin with # as a comment



目前尚不清楚是否允许散列之前的空格。我的测试似乎表明它是允许的,但我正在寻找一个明确的答案。

同页是 unambiguous关于散列在 .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 CLI 文件:

关于 file parser line 45我们发现

line := strings.TrimLeftFunc(string(scannedBytes), unicode.IsSpace)

它从左侧修剪空白。因此,如果非第一个空格字符是 #这将算作左侧修剪之后的任何代码的注释。

The isSpace函数检查以下字符

'\t', '\n', '\v', '\f', '\r', ' ', U+0085 (NEL), U+00A0 (NBSP).



这些都将被第 45 行的代码删除,直到遇到不符合这些规范的字符。
# Nothing trimmed
# 1 tab 7 spaces trimmed
0 # 4 spaces trimmed

然后 on line 48我们找到它测试它是否是评论的地方
  if len(line) > 0 && !strings.HasPrefix(line, "#") {

所以任何被 strings.TrimLeftFunc 剥离的空格字符不会使评论“无效”。

所以总结一下你的问题 Dockerfile 注释中的哈希“#”是否需要在第 1 列中? 答案是否定的,它可以在前面加上空格字符并且仍然是注释。
# Nothing trimmed   < -- comment
# 1 tab 7 spaces trimmed < -- comment
0 # 4 spaces trimmed < -- not a comment

关于docker - Dockerfile 注释中的哈希 '#' 是否需要在第 1 列中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50348242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com