我有一个包含以下内容的 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 文件中?
我推荐使用docker方式管理环境变量,官方文档:https://docs.docker.com/compose/environment-variables
如果你因为某种原因需要 bash 方式,我认为你应该
export REQUIREMENTS_FILE=/src/requirements/dev.txt
写django.dev.env
如果您不能或不愿意改变
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