在运行命令之前,Docker USER是否源代码.bashrc?

我有一个Docker文件,我沿着以下线路运行:

FROM centos:6.7 ... ... RUN useradd -ms /bin/bash my_user \ && echo "my_user:docker" | chpasswd \ && echo "my_user ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers \ && chown my_user:my_user /home/my_user \ && chmod 755 /home/my_user \ && mkdir -p /home/my_user/.ssh ... RUN echo "export HELLO=WORLD" >> /home/my_user/.bashrc ... USER my_user ENV FLASK_APP=/path/to/my/app.py CMD ["flask", "run", "--host", "0.0.0.0"] 

Flask服务器在获得正确的Web请求后,只需执行以下操作:

 procedure = subprocess.Popen("/my/cool/program", shell=False) 

但是,程序无法findHELLO环境variables。 当我强迫环境进入命令的时候

 env_dict = { 'HELLO': 'WORLD' } procedure = subprocess.Popen("/my/cool/program", shell=False, env=env_dict) 

它工作没有问题。 这使我相信这个问题是,当docker运行CMD作为USERselect的USER ,它不会首先正确地获取用户的环境。

真的吗? 如果是的话,有没有什么好方法呢? 我想避免在.bashrc和Flask应用程序中声明所有的envvariables。

尝试使用bash作为命令运行它:

 CMD ["bash", "-c", "flask run --host 0.0.0.0"]