docker 如果没有定义,localstack的${LOCALSTACK_VOLUME_DIR}变量是否有默认值?

mwngjboj  于 2023-05-28  发布在  Docker
关注(0)|答案(1)|浏览(128)

在一个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),则它将使用上面列表中的一个值替换空/缺失值🏻基于主机操作系统?
oo7oh9g9

oo7oh9g91#

${LOCALSTACK_VOLUME_DIR:-./volume}语法提供了一个默认值:如果docker-compose运行时,在主机环境中未设置LOCALSTACK_VOLUME_DIR环境变量或将其设置为空字符串,则使用文本./volume
Compose支持有限数量的环境变量扩展语法:${VARIABLE:-default}提供了一个默认值,如果值为空或未设置,${VARIABLE:?error}将打印一个错误。这两种语法都可以在没有冒号:的情况下使用,在这种情况下,接受set-but-empty值。这是标准Bourne shell参数扩展语法的子集;其余的不支持。
你最初的问题有一个PNG文件,看起来它包含了这个更完整的Compose片段:

volumes:
  - ${LOCALSTACK_VOLUME_DIR:-./volume}:/var/lib/localstack

因此,如果在主机上设置了$LOCALSTACK_VOLUME_DIR,则该目录将装入/var/lib/localstack;如果没有设置,则./volume是(相对于当前目录,如果需要,则创建)。
这个特定的目录名与您引用的文档不匹配,但是行为(目录挂载到/var/lib/localstack)是正确的。没有Compose语法来指定特定于操作系统的默认值,就像文档所暗示的那样。

相关问题