Я создаю образ докера и хочу навсегда изменить его env vars и путь. Мой упрощенный 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
Я не понимаю, почему этот set-up-env.sh не запускается, когда я запускаю оболочку?
Обратите внимание, что изменение /etc/environment
также не имеет никакого эффекта.