Я хочу использовать лабораторию Jupyter внутри virtualenv на контейнере Docker. Я попытался запустить лабораторный контейнер Jupyter внутри virtualenv, но не смог, потому что переменная $ PATH неверна.
Справочная информация: я использую своего рода кластер hpc, поэтому у нас нет особых разрешений. Я должен запустить лабораторию Jupyter в док-контейнере только для чтения. Мои домашние и рабочие каталоги смонтированы. Но пользователи без полномочий root не могут создавать новые образы контейнеров (я планирую предложить это решение администратору).
Требования: я хочу установить новые пакеты, которые не предоставляются в контейнере только для чтения. И я хочу установить новые пакеты в указанное место.
Поэтому я хочу создать образ Docker, который запускает лабораторию Jupyter в virtualenv, если задана переменная среды $ VENV_PATH.
Я создалDockerfile и скрипт на основе образа jupyter / datascience-notebook на DockerHub .
Dockerfile:
FROM jupyter/datascience-notebook
USER $NB_UID
COPY start-venv-notebook.sh /usr/local/bin/
CMD ["start-venv-notebook.sh"]
start-venv-notebook.sh:
#!/bin/bash
set -e
if [[ ! -z "${VENV_PATH}" ]]; then
abspath=$(realpath "${VENV_PATH}")
if [ ! -e "${abspath}" ]; then
# create venv
python -m venv "${abspath}"
fi
# activate venv
export VIRTUAL_ENV=$abspath
export PATH="$abspath/bin:$PATH"
fi
# exec original CMD
exec /usr/local/bin/start-notebook.sh "$@"
И я хочу использовать этот контейнер следующим образом:
docker run -p 8888:8888 -e VENV_PATH=testvenv -e JUPYTER_ENABLE_LAB=yes venvjupyterlab
Однако, когда я запускаю этот контейнер, он не запускается в virtualenv. Я думаю, что причина от $ PATH. / opt / conda / bin добавляется откуда-то. Я не могу найти точку.
$ echo $PATH
/opt/conda/bin:/home/jovyan/testvenv/bin:/opt/conda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Пожалуйста, помогите мне или подскажите другие решения. Спасибо.