加载.env的Dockerfile入口点bash文件在容器

时间:2017-10-25 14:25:41

标签: bash docker

我正在尝试为我的应用程序开发一个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'。

1 个答案:

答案 0 :(得分:2)

此行为的原因是docker exec -it container_name bash启动了一个新的bash。新bash只有标准环境变量加上.bashrc.bash_profile文件中指定的变量。 适合您的问题的解决方案是使用--env-file选项和docker run命令。请注意,env文件需要如下所示:

test1=test1
test2=test2