Docker Compose 中环境文件的语法

本页提供有关使用.env文件时的语法规则和指南的信息。它定义了注释规则,并解释了如何处理值。此外,它还引入了插值的概念,允许在环境文件中使用变量。

重要的

环境文件中的环境变量的优先级低于任何其他 方法中的环境变量。有关详细信息,请参阅 环境变量优先级

句法

以下语法规则适用于环境文件:

  • 以 开头的行将#作为注释处理并被忽略。
  • 空行将被忽略。
  • 不带引号和双引号 ( ") 值应用了 插值
  • 每行代表一个键值对。可以选择引用值。
    • VAR=VAL->VAL
    • VAR="VAL"->VAL
    • VAR='VAL'->VAL
  • 未加引号的值的内联注释前面必须有一个空格。
    • VAR=VAL # comment->VAL
    • VAR=VAL# not a comment->VAL# not a comment
  • 引用值的内嵌注释必须位于结束引用之后。
    • VAR="VAL # not a comment"->VAL # not a comment
    • VAR="VAL" # comment->VAL
  • 单引号 ( ') 值按字面意思使用。
    • VAR='$OTHER'->$OTHER
    • VAR='${OTHER}'->${OTHER}
  • 引号可以用 转义\
    • VAR='Let\'s go!'->Let's go!
    • VAR="{\"hello\": \"json\"}"->{"hello": "json"}
  • 双引号值支持常见的 shell 转义序列,包括\n\r\t和。\\
    • VAR="some\tvalue"->some value
    • VAR='some\tvalue'->some\tvalue
    • VAR=some\tvalue->some\tvalue

插值法

Compose 支持环境文件中的插值。插值适用于不带引号和双引号的值。支持花括号 ( ${VAR}) 和不花括号 ( ) 表达式。$VAR

对于大括号表达式,支持以下格式:

  • 直接替代
    • ${VAR}-> 的值VAR
  • 默认值
    • ${VAR:-default}VAR->如果设置且非空的值,否则default
    • ${VAR-default}->VAR如果设置的值,否则default
  • 所需值
    • ${VAR:?error}VAR->如果设置且非空的值,否则错误退出
    • ${VAR?error}-> 如果设置了值VAR,否则错误退出
  • 替代价值
    • ${VAR:+replacement}->replacement如果VAR已设置且非空,否则为空
    • ${VAR+replacement}->replacement如果VAR已设置,否则为空

有关更多信息,请参阅 Compose 规范中的插值。