【问题标题】:Dockerfile Run bash file using $PATH from ENV directiveDockerfile 使用来自 ENV 指令的 $PATH 运行 bash 文件
【发布时间】:2018-01-10 07:25:41
【问题描述】:

下面是我的 Dockerfile 的一部分,我想用 ENV 设置一次 PATH,在下面的 *.sh 文件中,他们不需要重新定义 $PATH。 如何做到这一点?

ENV PATH="/usr/local/bin:/opt/local/sbin:$PATH"

RUN /bin/bash -c "source install_anaconda3.sh"

RUN /bin/bash -c "source install_tensorflow.sh"

RUN /bin/bash -c "source install_theano.sh"

在 install_anaconda3.sh 里面是:

#!/bin/bash -
bash "./installer/Anaconda3-5.0.1-Linux-x86_64.sh" -u -b

conda upgrade -y --all

然后我得到以下错误:

/bin/sh: install_anaconda3.sh: 找不到命令

【问题讨论】:

    标签: docker environment-variables


    【解决方案1】:

    @Pavel Agarkov,我改成了

    运行导出 CUDA_HOME=/usr/local/cuda

    运行导出 PATH="/root/anaconda3/bin:$PATH"

    运行导出 PATH="/usr/local/bin:/opt/local/sbin:$PATH"

    运行 /bin/bash -c "source install_anaconda3.sh" 在 install_anaconda3.sh 中,仍然无法获取正确的 PATH。

    【讨论】:

      【解决方案2】:

      您可以设置一个工作目录,以便以下命令将在其上下文中运行:

      WORKDIR /usr/local/bin
      # run scripts from /usr/local/bin
      RUN ./install_anaconda3.sh
      RUN ./install_tensorflow.sh
      # ...
      

      这样你就不需要 $PATH

      【讨论】:

      • 我改成 :RUN export CUDA_HOME=/usr/local/cuda RUN export PATH="/root/anaconda3/bin:$PATH" RUN export PATH="/usr/local/bin:/ opt/local/sbin:$PATH" 并在 install_anaconda3.sh --> echo "path --> $PATH" 中打印,输出确认它没有得到正确的 PATH。
      • @huangyingw,事实证明我对ENV 的看法是错误的——它确实有效,如果用它设置环境变量——你可以从另一个文件中的shell脚本访问这个变量——但它没有无论您如何启动文件(直接或使用source 命令)。我尝试了所有方法,但一切正常,即使您的原始代码也能正常工作!
      • 是的,你是对的,刚刚尝试过,它有效,非常感谢您的澄清。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-20
      • 2017-01-24
      • 2019-12-30
      • 2019-07-07
      • 2013-02-04
      • 1970-01-01
      相关资源
      最近更新 更多