在一个previous SO question中,我问了LocalStack的docker-compose文件中有哪些环境变量;例如变量引用${LOCALSTACK_VOLUME_DIR:-./volume}
。
对于变量${LOCALSTACK_VOLUME_DIR}
:如果没有在环境变量中定义,会发生什么?
文档是这样说的(但我不明白/觉得它模棱两可):
使用CLI启动LocalStack时,可以通过LOCALSTACK_VOLUME_DIR配置卷目录。它应该指向主机上的一个目录,然后该目录会自动挂载到/var/lib/localstack中。默认值为:
Mac:~/Library/Caches/localstack/volume
Linux:~/.cache/localstack/volume
Windows:%LOCALAPPDATA%/localstack/cache/volume
- 首先,我不确定使用
docker compose
是否被认为是“启动LocalStack的CLI”? - 其次,这是否意味着如果没有在任何地方提供此值(即。no env var),则它将使用上面列表中的一个值替换空/缺失值🏻基于主机操作系统?
1条答案
按热度按时间oo7oh9g91#
${LOCALSTACK_VOLUME_DIR:-./volume}
语法提供了一个默认值:如果docker-compose
运行时,在主机环境中未设置LOCALSTACK_VOLUME_DIR
环境变量或将其设置为空字符串,则使用文本./volume
。Compose支持有限数量的环境变量扩展语法:
${VARIABLE:-default}
提供了一个默认值,如果值为空或未设置,${VARIABLE:?error}
将打印一个错误。这两种语法都可以在没有冒号:
的情况下使用,在这种情况下,接受set-but-empty值。这是标准Bourne shell参数扩展语法的子集;其余的不支持。你最初的问题有一个PNG文件,看起来它包含了这个更完整的Compose片段:
因此,如果在主机上设置了
$LOCALSTACK_VOLUME_DIR
,则该目录将装入/var/lib/localstack
;如果没有设置,则./volume
是(相对于当前目录,如果需要,则创建)。这个特定的目录名与您引用的文档不匹配,但是行为(目录挂载到
/var/lib/localstack
)是正确的。没有Compose语法来指定特定于操作系统的默认值,就像文档所暗示的那样。