从 bash 脚本加载 ENV 文件

从 bash 脚本加载 ENV 文件

我有一个包含以下内容的 bash 脚本:

#!/bin/bash
source ./django.dev.env
docker compose --env-file ./uvicorn.dev.env -f ./docker-compose.yaml

和一个django.dev.env文件内容如下:

REQUIREMENTS_FILE=/src/requirements/dev.txt

并在docker compose命令我使用 REQUIREMENTS_FILE env var,但它不起作用并说找不到这个var,但如果我像这样更改 bash 脚本文件:

#!/bin/bash
export REQUIREMENTS_FILE=/src/requirements/dev.txt
docker compose --env-file ./uvicorn.dev.env -f ./docker-compose.yaml

它运行得很好,但我应该使用一个 env 文件,而且我不想在我的 bash 脚本中硬编码变量,有没有什么方法可以解决这个问题?

答案1

看来你知道 docker compose--env-file选项,为什么不把 EQUIREMENTS_FILE 也放在 env 文件中?

  1. 我推荐使用docker方式管理环境变量,官方文档:https://docs.docker.com/compose/environment-variables

  2. 如果你因为某种原因需要 bash 方式,我认为你应该export REQUIREMENTS_FILE=/src/requirements/dev.txtdjango.dev.env

  3. 如果您不能或不愿意改变django.dev.env,您可以编写如下 bash 脚本:

#!/bin/bash
set -o allexport
source ./django.dev.env
set +o allexport
docker compose --env-file ./uvicorn.dev.env -f ./docker-compose.yaml

链接: https://stackoverflow.com/questions/19331497/set-environment-variables-from-file-of-key-value-pairs

相关内容