liguangxin
liguangxin:~/blog$ source "docker-compose 环境变量.sh"

liguangxin:~/blog$ printenv
CREATED_DATE = 2024-08-27
UPDATED_DATE = 2024-08-27
TAGS = docker : docker-compose : linux
CATEGORIES = Docker : Linux

liguangxin:~/blog$ grep -lr $TAGS post
2024-08-27 linux(centos7) 安装 docker
2024-08-27 docker-compose 环境变量
docker-compose 环境变量

官方说明:

多个文件,会按照顺序从上到下执行,会覆盖同名环境变量
.env可以和env_file同时使用,但是在.env中定义的变量不能在合成文件(yaml文件中再次声明使用)
优先级为 environment > env_file
env_file的文件地址与yaml文件事相对的
可以用 docker compose run -e 来覆盖.env文件里的值
使用env_file并且指定了文件地址,但是确实文件的话,会报错。如果设置了参数required=False,会跳过这个问题
${var} # 设置变量为var的值
${var:-default} # 如果已设置且非空就是var的值,否则为默认值
${var-default} # 如果已设置且非空就是var的值,否则为默认值

${var:?error} # 如果设置且非空,则返回VAR的值,否则退出并返回错误
${var?error} # 如果设置且非空,则返回VAR的值,否则退出并返回错误

${VAR:+replacement} # 如果设置了VAR且非空,则替换为replacement的值,否则为空
${VAR+replacement} # 如果设置了VAR且非空,则替换为replacement的值,否则为空

想要更多,就在 https://docs.docker.com/compose/compose-file/12-interpolation/