如何在 shell 脚本中访问 .env 文件中定义的环境变量?
.env 文件
USERNAME=user
PASSWORD=pass
Dockerfile
....
COPY ./compose/django/celery/worker/start_celery_flower.sh /start_celery_flower.sh
RUN sed -i 's/\r//' /start_celery_flower.sh
RUN chmod +x /start_celery_flower.sh
....
我尝试在 shell 脚本中使用 $USERNAME
,但这不起作用。我能够在容器内运行的应用程序中访问这些变量。
最佳答案
docker build $(cat .env | xargs -n1 echo '--build-arg' | tr '\n' ' ') .
并在您的Dockerfile
中添加
ARG USERNAME
ARG PASSWORD
基本上,您需要使用 --build-arg 来传递构建参数。我发布的命令将有助于从文件中获取多个命令。
编辑-1
要在 docker-compose 中使用,如下所示
version: '3'
services:
web:
build:
context: .
args:
- USERNAME=$USERNAME
- PASSWORD=$PASSWORD
现在您需要在发送到 docker-compose 之前导出变量
set -a
source .env
set +a
docker-compose up --build -d
关于docker - 如何从 Dockerfile shell 脚本中的 .env 文件获取环境变量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46079783/