docker - 如何永久更改Docker容器中的$ PATH

标签 docker debian

我正在构建docker镜像,并希望永久更改其env变量和路径。我简化的dockerfile是这样的:

FROM python:3.6.8-slim-stretch

USER root

RUN pip3 install pyspark

RUN touch /etc/profile.d/set-up-env.sh && \
    echo export SPARK_HOME='/usr/local/lib/python3.6/site-packages/pyspark' >> /etc/profile.d/set-up-env.sh && \
    echo export PATH='${SPARK_HOME}/bin:${PATH}' >> /etc/profile.d/set-up-env.sh && \
    echo export PYSPARK_PYTHON='python3.6' >> /etc/profile.d/set-up-env.sh && \
    chmod +x /etc/profile.d/set-up-env.sh

可以使用docker build -t data-job-base .成功构建图像
但是,当我运行它docker run --rm -it data-job-base bash时,在此正在运行的容器中SPARK_HOME为空,并且PATH没有变化。我cat /etc/profile.d/set-up-env.sh,可以看到它写的正确:
export SPARK_HOME=/usr/local/lib/python3.6/site-packages/pyspark
export PATH=${SPARK_HOME}/bin:${PATH}
export PYSPARK_PYTHON=python3.6

我不明白,为什么启动shell时无法运行此set-env.sh?

请注意,修改/etc/environment也不起作用。

最佳答案

您可以在Dockerfile中使用ENV指令

FROM python:3.6.8-slim-stretch
USER root
ENV SPARK_HOME=/usr/local/lib/python3.6/site-packages/pyspark \
    PATH=${SPARK_HOME}/bin:${PATH} \
    PYSPARK_PYTHON=python3.6
RUN pip3 install pyspark

关于docker - 如何永久更改Docker容器中的$ PATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56549897/

相关文章:

Linux sdiff 命令剪切输出文本

debian - 如何删除和清除 apt-get 安装的所有软件包?

docker - 没有人拥有的孤立子体积无法对其进行任何处理

docker - 为非常大的 docker 图像构建上下文

docker - docker 容器内的 SSH 隧道

python - 从 python 运行 .sh 脚本作为 sudo

docker - 在 Alpine Linux Docker 容器中安装 ODBC 驱动程序

visual-studio - 是否可以在 Windows 容器中安装 Visual Studio

video - 提高 ffmpeg 视频捕获性能?

linux - Debian:找不到 deb 命令。我该如何解决?