如何从Dockerfile shell脚本中的.env文件中获取环境变量值?

如何从Dockerfile shell脚本中的.env文件中获取环境变量值?,docker,environment-variables,docker-compose,Docker,Environment Variables,Docker Compose,如何在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脚本中访问.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跳过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 compose一起使用?我正在使用“编写文件”。@AshishGupta,请将此标记为已接受的答案,因为这是完成此操作的最佳方法。