Docker Compose 文件是一个 YAML 文件,其中的引号规则遵循 YAML 语法规则。以下是几个在 YAML 中使用引号的场景:
-
当字符串中包含特殊字符时,需要使用引号。这些特殊字符包括但不限于:冒号
:
,井号#
,星号*
,问号?
,破折号-
,>
,|
等。例如:environment: - "SOME_VAR=value:value"
-
当字符串中包含 YAML 保留字(如
true
,false
,null
,yes
,no
,on
,off
),并且你希望它们被当作字符串而不是布尔值或空值处理时,需要使用引号。例如:environment: - "SOME_VAR=true"
-
当字符串的值以数字开头时,建议使用引号,以避免它们被误解析为其他类型。例如:
environment: - "SOME_VAR=123abc"
-
当字符串的值是 JSON 或者其他复杂结构时,为了避免解析错误,也需要用引号包裹。例如:
labels: - "traefik.http.routers.my-container.rule=Host(`my-container.docker.localhost`)"
注意,YAML 中既可以使用单引号 '
,也可以使用双引号 "
, 但它们的行为是不同的。单引号会保留所有字符串中的特殊字符,而双引号允许转义序列(如 \n
代表新行)。
总的来说,虽然在很多情况下加不加引号都可以,但是为了避免可能的解析错误,建议在编写 YAML 文件时,总是使用引号来包裹字符串值。