如何永久更改 docker 容器中的 $PATH
How to permanently change $PATH in docker container
我正在构建一个 docker 图像并希望永久更改其环境变量和路径。我的简化 docker 文件是这样的:
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
时,在这个 运行ning 容器中 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
我不明白,为什么这个设置-env.sh在我启动shell时没有得到运行?
注意修改/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
好的,我已经通过在 bash.bashrc 中添加我的 shell 命令而不是配置文件、profile.d 或环境来解决这个问题。
我正在构建一个 docker 图像并希望永久更改其环境变量和路径。我的简化 docker 文件是这样的:
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
时,在这个 运行ning 容器中 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
我不明白,为什么这个设置-env.sh在我启动shell时没有得到运行?
注意修改/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
好的,我已经通过在 bash.bashrc 中添加我的 shell 命令而不是配置文件、profile.d 或环境来解决这个问题。