加载.env的Dockerfile入口点bash文件在容器中不可见

我正在尝试为我的应用程序开发一个Dockerfile,在初始化之后加载大量的环境variables。 不知何故,当我稍后执行以下命令时,这些variables是不可达的:

docker exec -it container_name bash printenv 

我的环境variables不可见。 如果我手动加载文件,但是,它们是:

 docker exec -it container_name bash source .env printenv ... environment variables are shown ... 

这是我的dockerfile:

Dockerfile

 FROM python:3.6 WORKDIR /usr/src/app COPY requirements.txt /usr/src/app/requirements.txt RUN pip install -r requirements.txt COPY . /usr/src/app/ RUN chmod 755 load_env_variables.sh ENTRYPOINT ["/bin/bash", "-c", "/usr/src/app/load_env_variables.sh"] 

load_env_variables.sh

 #!/bin/bash source .env python start_application 

而我的.env文件包含的行依次如下:'export name = value'。

这种行为的原因是docker exec -it container_name bash启动一个新的bash。 一个新的bash只有标准环境variables加上在.bashrc.bash_profile文件中指定的环境variables。 你的问题的一个适当的解决scheme是使用--env-file docker run命令的选项--env-file 。 请注意,env文件需要如下所示:

 test1=test1 test2=test2