在Docker容器中永久更新PATH环境变量

时间:2015-02-25 15:12:06

标签: environment-variables docker linux-containers

我尝试添加到文件PATH~/.profile中的/etc/profile,如下所示。

PATH = $PATH:/required/path

然而,它不起作用。然后我尝试添加行显示,这也不起作用。

export PATH

即使重新启动容器和主机,它也无法正常工作。

5 个答案:

答案 0 :(得分:93)

如果您想在 Dockerfile 中添加/new/path,请添加以下行:

ENV PATH "$PATH:/new/path"

Dockerfile 中的

应该有效。

答案 1 :(得分:12)

在您的Dockerfile中添加一行ENV PATH xxx,请参阅此Dockerfile中的示例https://gist.github.com/deepak/5933685

答案 2 :(得分:8)

我在irc聊天中得到了这个问题的答案。在这里给予任何可能遇到这种情况的人的利益。许多人在更新~/.profile时给出了错误的答案,但这不起作用。所以请使用下面的答案。

为用户更新文件~/.bashrc或更新全局更改文件/etc/enviroment,以适用于所有用户。

.bashrc导出路径:export PATH=$PATH:/new/path/bin

环境:PATH=$PATH:/new/path/bin

答案 3 :(得分:0)

1。正确答案

投票得最好的答案建议将ENV PATH "$PATH:/new/path"添加到 Dockerfile ,这确实应该有效。

2。那为什么对我不起作用?

如某些评论/答案中所述,解决方案1.不适用于某些人。

原因是在运行docker容器时PATH可能会被.bashrc之类的脚本覆盖,从而给人ENV PATH...无效的印象,但从理论上讲

要解决此问题,您需要通过在Dockerfile中添加以下命令,将正确的.bashrc附加到PATH

RUN echo "export PATH=/new/path:${PATH}" >> /root/.bashrc

答案 4 :(得分:0)

这是我的 docker 文件,在 Centos 上我已经提取并设置了 java 主路径,它对我有用。

Dockerfile:

FROM  centos:7
RUN yum update -y yum install -y tar
COPY jdk-7u80-linux-x64.tar.gz /opt/
WORKDIR /opt
RUN tar -xvf jdk-7u80-linux-x64.tar.gz
RUN chmod -R 755 jdk1.7.0_80
RUN echo export JAVA_HOME=/opt/jdk1.7.0_80 >> /etc/profile
RUN echo export PATH='$PATH:$JAVA_HOME/bin' >> /etc/profile
ENV JAVA_HOME "/opt/jdk1.7.0_80"
ENV PATH "${JAVA_HOME}/bin:${PATH}"