我正在尝试为我的应用程序开发一个Dockerfile,它在初始化后加载大量环境变量。不知何故,当我稍后执行以下命令时,无法访问这些变量:
docker exec -it container_name bash
printenv
我的环境变量不可见。如果我手动加载文件,它们是:
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'。
答案 0 :(得分:2)
此行为的原因是docker exec -it container_name bash
启动了一个新的bash。新bash只有标准环境变量加上.bashrc
或.bash_profile
文件中指定的变量。
适合您的问题的解决方案是使用--env-file
选项和docker run
命令。请注意,env文件需要如下所示:
test1=test1
test2=test2