${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配置中设置环境变量。