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

时间:2017-09-06 16:03:28

标签: 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脚本中使用$USERNAME,但这不起作用。我能够在容器内运行的应用程序中访问这些变量。

1 个答案:

答案 0 :(得分:2)

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

并在Dockerfile添加

ARG USERNAME
ARG PASSWORD

基本上你需要使用--build-arg来构建args。我发布的命令将有助于从文件中获取多个。

修改-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