${DEBUG-}在yaml配置中是什么意思



${DEBUG-}在下面的yaml配置中是什么意思?${}中有一个破折号和空格,如何使用?

version: '3.3'
services:
localstack:
image: localstack/localstack:latest
ports:
- "4566:4566"
- "8080:8080"
environment:
- SERVICES=dynamodb,cognito,ssm,sqs,es,s3,ses
- DEFAULT_REGION=ap-northeast-1
- LOCALSTACK_API_KEY=${LOCALSTACK_API_KEY}
- DEBUG=${DEBUG- }
- DATA_DIR=${DATA_DIR- }
- LAMBDA_EXECUTOR=${LAMBDA_EXECUTOR- }
- KINESIS_ERROR_PROBABILITY=${KINESIS_ERROR_PROBABILITY- }
- DOCKER_HOST=unix:///var/run/docker.sock
volumes:
- "${TMPDIR:-/tmp/localstack}:/tmp/localstack"
- "/var/run/docker.sock:/var/run/docker.sock"

不确定YAML,但在bash中,表达式${VARNAME-DEFAULT}的意思是:替换为变量VARNAME的内容(如果存在(,否则使用DEFAULT

这里有一个例子:

$ echo "Hello ${PL-Earth}"
Hello Earth
$ PL=Neptune
$ echo "Hello ${PL-Earth}"
Hello Neptune
$ unset PL
$ echo "Hello ${PL-Earth}"
Hello Earth

当我查看您的yaml文件时,它看起来非常相似:如果设置了DEBUG,则使用设置的任何内容,否则使用单个空间,等等。这实际上是一种常见的用法,添加行

DEBUG=${DEBUG- }

确保名称为DEBUG的变量存在,即使它只包含一个空格。

至于如何使用它,请在执行使用该yaml文件的程序之前设置相应的环境变量。

$ export DEBUG='-g -O0 -fbacktrace -Wall'
$ <Call to program>

我对docker了解不多,但几乎可以肯定的是,有一种方法可以在docker配置中设置环境变量。

相关内容

最新更新