如何在env_file中进行变量替换?

chr*_*ish 6 docker-compose

我正在使用docker-compose,我希望我的env_file具有变量替换.我想在文件中定义一个变量,然后在其他变量中使用它:

APP_ENV=dev-foo
LOCALPATH=/tmp/builddir/${APP_ENV}
GIT_URL=git@github.com:some-org/${APP_ENV}
Run Code Online (Sandbox Code Playgroud)

env_file中支持的变量替换形式是什么?

dne*_*hin 8

env_file 中不支持变量替换。

您的选择是:

  • 在该environment:部分使用变量(尽管您将无法执行您的示例,因为在中设置值environment仅针对容器环境设置它,并且替换发生在主机上)。
  • 通过指定一个没有值的环境变量(例如LOCALPATH=:)来使用主机变量,它可能位于 env_file 或 environment 部分。


Fir*_*DoL 3

docker compose现在支持变量替换

语法类似于 shell 替换。

直接替代

${VAR} -> value of VAR
Run Code Online (Sandbox Code Playgroud)

默认值

${VAR:-default} -> value of VAR if set and non-empty, otherwise default
${VAR-default} -> value of VAR if set, otherwise default
Run Code Online (Sandbox Code Playgroud)

所需值

${VAR:?error} -> value of VAR if set and non-empty, otherwise exit with error
${VAR?error} -> value of VAR if set, otherwise exit with error
Run Code Online (Sandbox Code Playgroud)

替代价值

${VAR:+replacement} -> replacement if VAR is set and non-empty, otherwise empty
${VAR+replacement} -> replacement if VAR is set, otherwise empty
Run Code Online (Sandbox Code Playgroud)