Docker 使用后备组合 .env 默认值
Docker compose .env default with fallback
我想在 git 存储库中保存一个 docker-compose.yaml
文件。
我想要一些默认的 .env
变量,但我也想要像 .env.local
这样可以覆盖 .env
的东西,但我不想提交 .env.local
所以它应该被git忽略。
有什么方法可以告诉 docker-compose.yaml
“如果存在则使用 .env.local,否则使用 .env”?
这个想法是允许某人克隆存储库,如果他们愿意,可以使用他们自己的 .env.local
,而无需提交 git 更改或使用默认 .env
值(如果他们不这样做) '想自定义它。
如果您按名称使用 env 文件中的值,如下所示。您可以使用如图所示的 posix parameter expansion 来获取默认值行为。 Compose 将使用 .env
文件中的该变量的值,或者如果它在您的 shell 中设置,否则它将默认为 default-value.
services:
myapp:
environment:
SOME_VALUE: ${SOME_VALUE:-default-value}
如果您打算在 env_file
键下使用它,您可以使用上面示例中的知识做一些技巧。
services:
myapp:
env_file: ${ENV_FILE:-.env.local}
现在默认使用.env.local。除非您碰巧将 .env
文件放在项目的根目录下(从您调用 compose 的地方)并覆盖其中的 ENV_FILE
变量。或者将其导出到您的 shell。请注意,.env 文件必须包含 ENV_FILE=.env
才能在 env_file:
中扩展为 .env
ENV_FILE=.env
OTHER_STUFF=foo
我想在 git 存储库中保存一个 docker-compose.yaml
文件。
我想要一些默认的 .env
变量,但我也想要像 .env.local
这样可以覆盖 .env
的东西,但我不想提交 .env.local
所以它应该被git忽略。
有什么方法可以告诉 docker-compose.yaml
“如果存在则使用 .env.local,否则使用 .env”?
这个想法是允许某人克隆存储库,如果他们愿意,可以使用他们自己的 .env.local
,而无需提交 git 更改或使用默认 .env
值(如果他们不这样做) '想自定义它。
如果您按名称使用 env 文件中的值,如下所示。您可以使用如图所示的 posix parameter expansion 来获取默认值行为。 Compose 将使用 .env
文件中的该变量的值,或者如果它在您的 shell 中设置,否则它将默认为 default-value.
services:
myapp:
environment:
SOME_VALUE: ${SOME_VALUE:-default-value}
如果您打算在 env_file
键下使用它,您可以使用上面示例中的知识做一些技巧。
services:
myapp:
env_file: ${ENV_FILE:-.env.local}
现在默认使用.env.local。除非您碰巧将 .env
文件放在项目的根目录下(从您调用 compose 的地方)并覆盖其中的 ENV_FILE
变量。或者将其导出到您的 shell。请注意,.env 文件必须包含 ENV_FILE=.env
才能在 env_file:
ENV_FILE=.env
OTHER_STUFF=foo