Как навсегда изменить $ PATH в контейнере Docker - PullRequest
0 голосов
/ 11 июня 2019

Я создаю образ докера и хочу навсегда изменить его 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 также не имеет никакого эффекта.

Ответы [ 2 ]

0 голосов
/ 19 июня 2019

ОК, я решил эту проблему, добавив свои команды оболочки в bash.bashrc вместо profile, profile.d или environment.

0 голосов
/ 12 июня 2019

Вы можете использовать директиву ENV в Dockerfile

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...