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

我如何在shell脚本中访问.env文件中定义的环境variables?

.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 ,但这不起作用。 我能够在容器内运行的应用程序中访问这些variables。

 docker build $(cat .env | xargs -n1 echo '--build-arg' | tr '\n' ' ') . 

并在你的Dockerfile添加

 ARG USERNAME ARG PASSWORD 

基本上你需要使用–build-arg过去构build参数。 我发布的命令将有助于从文件中获取多个。

编辑-1

在docker-compose中使用,如下所示

 version: '3' services: web: build: context: . args: - USERNAME=$USERNAME - PASSWORD=$PASSWORD 

现在您需要在发送到docker-compose之前导出variables

 set -a source .env set +a docker-compose up --build -d