如何从Dockerfile shell脚本中的.env文件中获取环境变量值?
如何在shell脚本中访问.env文件中定义的环境变量 .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 ....
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,请将此标记为已接受的答案,因为这是完成此操作的最佳方法。