mirror of
https://github.com/jupyter/docker-stacks.git
synced 2025-10-08 02:24:04 +00:00
More installation updates
This commit is contained in:
@@ -8,8 +8,8 @@ LABEL maintainer="Jupyter Project <jupyter@googlegroups.com>"
|
|||||||
USER root
|
USER root
|
||||||
|
|
||||||
# RSpark config
|
# RSpark config
|
||||||
ENV R_LIBS_USER $SPARK_HOME/R/lib
|
ENV R_LIBS_USER "${SPARK_HOME}/R/lib"
|
||||||
RUN fix-permissions $R_LIBS_USER
|
RUN fix-permissions "${R_LIBS_USER}"
|
||||||
|
|
||||||
# R pre-requisites
|
# R pre-requisites
|
||||||
RUN apt-get update --yes && \
|
RUN apt-get update --yes && \
|
||||||
|
@@ -90,15 +90,15 @@ RUN echo "auth requisite pam_deny.so" >> /etc/pam.d/su && \
|
|||||||
mkdir -p $CONDA_DIR && \
|
mkdir -p $CONDA_DIR && \
|
||||||
chown $NB_USER:$NB_GID $CONDA_DIR && \
|
chown $NB_USER:$NB_GID $CONDA_DIR && \
|
||||||
chmod g+w /etc/passwd && \
|
chmod g+w /etc/passwd && \
|
||||||
fix-permissions $HOME && \
|
fix-permissions "${HOME}" && \
|
||||||
fix-permissions $CONDA_DIR
|
fix-permissions "${CONDA_DIR}"
|
||||||
|
|
||||||
USER $NB_UID
|
USER $NB_UID
|
||||||
ARG PYTHON_VERSION=default
|
ARG PYTHON_VERSION=default
|
||||||
|
|
||||||
# Setup work directory for backward-compatibility
|
# Setup work directory for backward-compatibility
|
||||||
RUN mkdir "/home/$NB_USER/work" && \
|
RUN mkdir "/home/$NB_USER/work" && \
|
||||||
fix-permissions "/home/$NB_USER"
|
fix-permissions "/home/${NB_USER}"
|
||||||
|
|
||||||
# Install conda as jovyan and check the sha256 sum provided on the download site
|
# Install conda as jovyan and check the sha256 sum provided on the download site
|
||||||
WORKDIR /tmp
|
WORKDIR /tmp
|
||||||
@@ -120,8 +120,8 @@ RUN wget --quiet "https://github.com/conda-forge/miniforge/releases/download/${m
|
|||||||
conda update --all --quiet --yes && \
|
conda update --all --quiet --yes && \
|
||||||
conda clean --all -f -y && \
|
conda clean --all -f -y && \
|
||||||
rm -rf /home/$NB_USER/.cache/yarn && \
|
rm -rf /home/$NB_USER/.cache/yarn && \
|
||||||
fix-permissions $CONDA_DIR && \
|
fix-permissions "${CONDA_DIR}" && \
|
||||||
fix-permissions /home/$NB_USER
|
fix-permissions "/home/${NB_USER}"
|
||||||
|
|
||||||
# Install Jupyter Notebook, Lab, and Hub
|
# Install Jupyter Notebook, Lab, and Hub
|
||||||
# Generate a notebook server config
|
# Generate a notebook server config
|
||||||
@@ -138,8 +138,8 @@ RUN conda install --quiet --yes \
|
|||||||
jupyter notebook --generate-config && \
|
jupyter notebook --generate-config && \
|
||||||
jupyter lab clean && \
|
jupyter lab clean && \
|
||||||
rm -rf /home/$NB_USER/.cache/yarn && \
|
rm -rf /home/$NB_USER/.cache/yarn && \
|
||||||
fix-permissions $CONDA_DIR && \
|
fix-permissions "${CONDA_DIR}" && \
|
||||||
fix-permissions /home/$NB_USER
|
fix-permissions "/home/${NB_USER}"
|
||||||
|
|
||||||
EXPOSE 8888
|
EXPOSE 8888
|
||||||
|
|
||||||
|
@@ -137,7 +137,7 @@ conda install --channel defaults humanize
|
|||||||
conda config --system --prepend channels defaults
|
conda config --system --prepend channels defaults
|
||||||
# install a package
|
# install a package
|
||||||
conda install --quiet --yes humanize && \
|
conda install --quiet --yes humanize && \
|
||||||
mamba clean --all -f -y && \
|
conda clean --all -f -y && \
|
||||||
fix-permissions "${CONDA_DIR}" && \
|
fix-permissions "${CONDA_DIR}" && \
|
||||||
fix-permissions "/home/${NB_USER}"
|
fix-permissions "/home/${NB_USER}"
|
||||||
```
|
```
|
||||||
|
@@ -32,7 +32,9 @@ Create a new Dockerfile like the one shown below.
|
|||||||
# Start from a core stack version
|
# Start from a core stack version
|
||||||
FROM jupyter/datascience-notebook:33add21fab64
|
FROM jupyter/datascience-notebook:33add21fab64
|
||||||
# Install in the default python3 environment
|
# Install in the default python3 environment
|
||||||
RUN pip install 'ggplot==0.6.8'
|
RUN pip install --quiet --no-cache-dir 'flake8==3.9.2' && \
|
||||||
|
fix-permissions "${CONDA_DIR}" && \
|
||||||
|
fix-permissions "/home/${NB_USER}"
|
||||||
```
|
```
|
||||||
|
|
||||||
Then build a new image.
|
Then build a new image.
|
||||||
@@ -49,9 +51,9 @@ packages desired. Next, create a new Dockerfile like the one shown below.
|
|||||||
FROM jupyter/datascience-notebook:33add21fab64
|
FROM jupyter/datascience-notebook:33add21fab64
|
||||||
# Install from requirements.txt file
|
# Install from requirements.txt file
|
||||||
COPY --chown=${NB_UID}:${NB_GID} requirements.txt /tmp/
|
COPY --chown=${NB_UID}:${NB_GID} requirements.txt /tmp/
|
||||||
RUN pip install --requirement /tmp/requirements.txt && \
|
RUN pip install --quiet --no-cache-dir --requirement /tmp/requirements.txt && \
|
||||||
fix-permissions $CONDA_DIR && \
|
fix-permissions "${CONDA_DIR}" && \
|
||||||
fix-permissions /home/$NB_USER
|
fix-permissions "/home/${NB_USER}"
|
||||||
```
|
```
|
||||||
|
|
||||||
For conda, the Dockerfile is similar:
|
For conda, the Dockerfile is similar:
|
||||||
@@ -62,8 +64,9 @@ FROM jupyter/datascience-notebook:33add21fab64
|
|||||||
# Install from requirements.txt file
|
# Install from requirements.txt file
|
||||||
COPY --chown=${NB_UID}:${NB_GID} requirements.txt /tmp/
|
COPY --chown=${NB_UID}:${NB_GID} requirements.txt /tmp/
|
||||||
RUN conda install --yes --file /tmp/requirements.txt && \
|
RUN conda install --yes --file /tmp/requirements.txt && \
|
||||||
fix-permissions $CONDA_DIR && \
|
conda clean --all -f -y && \
|
||||||
fix-permissions /home/$NB_USER
|
fix-permissions "${CONDA_DIR}" && \
|
||||||
|
fix-permissions "/home/${NB_USER}"
|
||||||
```
|
```
|
||||||
|
|
||||||
Ref: [docker-stacks/commit/79169618d571506304934a7b29039085e77db78c](https://github.com/jupyter/docker-stacks/commit/79169618d571506304934a7b29039085e77db78c#commitcomment-15960081)
|
Ref: [docker-stacks/commit/79169618d571506304934a7b29039085e77db78c](https://github.com/jupyter/docker-stacks/commit/79169618d571506304934a7b29039085e77db78c#commitcomment-15960081)
|
||||||
@@ -124,8 +127,8 @@ RUN conda create --quiet --yes -p $CONDA_DIR/envs/$conda_env python=$py_ver ipyt
|
|||||||
|
|
||||||
# create Python 3.x environment and link it to jupyter
|
# create Python 3.x environment and link it to jupyter
|
||||||
RUN $CONDA_DIR/envs/${conda_env}/bin/python -m ipykernel install --user --name=${conda_env} && \
|
RUN $CONDA_DIR/envs/${conda_env}/bin/python -m ipykernel install --user --name=${conda_env} && \
|
||||||
fix-permissions $CONDA_DIR && \
|
fix-permissions "${CONDA_DIR}" && \
|
||||||
fix-permissions /home/$NB_USER
|
fix-permissions "/home/${NB_USER}"
|
||||||
|
|
||||||
# any additional pip installs can be added by uncommenting the following line
|
# any additional pip installs can be added by uncommenting the following line
|
||||||
# RUN $CONDA_DIR/envs/${conda_env}/bin/pip install
|
# RUN $CONDA_DIR/envs/${conda_env}/bin/pip install
|
||||||
@@ -154,7 +157,9 @@ Run jupyterlab using a command such as
|
|||||||
FROM jupyter/scipy-notebook:latest
|
FROM jupyter/scipy-notebook:latest
|
||||||
|
|
||||||
# Install the Dask dashboard
|
# Install the Dask dashboard
|
||||||
RUN pip install dask-labextension
|
RUN pip install --quiet --no-cache-dir dask-labextension && \
|
||||||
|
fix-permissions "${CONDA_DIR}" && \
|
||||||
|
fix-permissions "/home/${NB_USER}"
|
||||||
|
|
||||||
# Dask Scheduler & Bokeh ports
|
# Dask Scheduler & Bokeh ports
|
||||||
EXPOSE 8787
|
EXPOSE 8787
|
||||||
@@ -192,7 +197,10 @@ notebooks, with no conversion, adding javascript Reveal.js:
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Add Live slideshows with RISE
|
# Add Live slideshows with RISE
|
||||||
RUN conda install -c damianavila82 rise
|
RUN conda install --quiet --yes -c damianavila82 rise && \
|
||||||
|
conda clean --all -f -y && \
|
||||||
|
fix-permissions "${CONDA_DIR}" && \
|
||||||
|
fix-permissions "/home/${NB_USER}"
|
||||||
```
|
```
|
||||||
|
|
||||||
Credit: [Paolo D.](https://github.com/pdonorio) based on
|
Credit: [Paolo D.](https://github.com/pdonorio) based on
|
||||||
@@ -204,11 +212,16 @@ You need to install conda's gcc for Python xgboost to work properly. Otherwise,
|
|||||||
exception about libgomp.so.1 missing GOMP_4.0.
|
exception about libgomp.so.1 missing GOMP_4.0.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
%%bash
|
conda install --quiet --yes gcc && \
|
||||||
conda install -y gcc
|
conda clean --all -f -y && \
|
||||||
pip install xgboost
|
fix-permissions "${CONDA_DIR}" && \
|
||||||
|
fix-permissions "/home/${NB_USER}"
|
||||||
|
|
||||||
import xgboost
|
pip install --quiet --no-cache-dir xgboost && \
|
||||||
|
fix-permissions "${CONDA_DIR}" && \
|
||||||
|
fix-permissions "/home/${NB_USER}"
|
||||||
|
|
||||||
|
# run "import xgboost" in python
|
||||||
```
|
```
|
||||||
|
|
||||||
## Running behind a nginx proxy
|
## Running behind a nginx proxy
|
||||||
@@ -308,7 +321,9 @@ version in the Hub itself.
|
|||||||
|
|
||||||
```dockerfile
|
```dockerfile
|
||||||
FROM jupyter/base-notebook:33add21fab64
|
FROM jupyter/base-notebook:33add21fab64
|
||||||
RUN pip install jupyterhub==0.8.0b1
|
RUN pip install --quiet --no-cache-dir jupyterhub==1.4.1 && \
|
||||||
|
fix-permissions "${CONDA_DIR}" && \
|
||||||
|
fix-permissions "/home/${NB_USER}"
|
||||||
```
|
```
|
||||||
|
|
||||||
Credit: [MinRK](https://github.com/jupyter/docker-stacks/issues/423#issuecomment-322767742)
|
Credit: [MinRK](https://github.com/jupyter/docker-stacks/issues/423#issuecomment-322767742)
|
||||||
@@ -444,9 +459,11 @@ USER $NB_USER
|
|||||||
# - Dashboards
|
# - Dashboards
|
||||||
# - PyDoop
|
# - PyDoop
|
||||||
# - PyHive
|
# - PyHive
|
||||||
RUN pip install jupyter_dashboards faker && \
|
RUN pip install --quiet --no-cache-dir jupyter_dashboards faker && \
|
||||||
jupyter dashboards quick-setup --sys-prefix && \
|
jupyter dashboards quick-setup --sys-prefix && \
|
||||||
pip2 install pyhive pydoop thrift sasl thrift_sasl faker
|
pip2 install --quiet --no-cache-dir pyhive pydoop thrift sasl thrift_sasl faker && \
|
||||||
|
fix-permissions "${CONDA_DIR}" && \
|
||||||
|
fix-permissions "/home/${NB_USER}"
|
||||||
|
|
||||||
USER root
|
USER root
|
||||||
# Ensure we overwrite the kernel config so that toree connects to cluster
|
# Ensure we overwrite the kernel config so that toree connects to cluster
|
||||||
@@ -488,10 +505,12 @@ FROM jupyter/minimal-notebook:latest
|
|||||||
|
|
||||||
USER $NB_USER
|
USER $NB_USER
|
||||||
|
|
||||||
RUN pip install jupyter_contrib_nbextensions && \
|
RUN pip install --quiet --no-cache-dir jupyter_contrib_nbextensions && \
|
||||||
jupyter contrib nbextension install --user && \
|
jupyter contrib nbextension install --user && \
|
||||||
# can modify or enable additional extensions here
|
# can modify or enable additional extensions here
|
||||||
jupyter nbextension enable spellchecker/main --user
|
jupyter nbextension enable spellchecker/main --user && \
|
||||||
|
fix-permissions "${CONDA_DIR}" && \
|
||||||
|
fix-permissions "/home/${NB_USER}"
|
||||||
```
|
```
|
||||||
|
|
||||||
Ref: <https://github.com/jupyter/docker-stacks/issues/675>
|
Ref: <https://github.com/jupyter/docker-stacks/issues/675>
|
||||||
@@ -513,7 +532,9 @@ RUN apt-get update --yes && \
|
|||||||
|
|
||||||
USER $NB_UID
|
USER $NB_UID
|
||||||
|
|
||||||
RUN pip install --quiet --no-cache-dir auto-sklearn
|
RUN pip install --quiet --no-cache-dir auto-sklearn && \
|
||||||
|
fix-permissions "${CONDA_DIR}" && \
|
||||||
|
fix-permissions "/home/${NB_USER}"
|
||||||
```
|
```
|
||||||
|
|
||||||
## Enable Delta Lake in Spark notebooks
|
## Enable Delta Lake in Spark notebooks
|
||||||
|
@@ -13,4 +13,4 @@ USER $NB_UID
|
|||||||
|
|
||||||
# Switch back to jovyan to avoid accidental container runs as root
|
# Switch back to jovyan to avoid accidental container runs as root
|
||||||
# Add permanent pip/conda installs, data files, other user libs here
|
# Add permanent pip/conda installs, data files, other user libs here
|
||||||
# e.g., RUN pip install jupyter_dashboards
|
# e.g., RUN pip install --quiet --no-cache-dir flake8
|
||||||
|
@@ -13,4 +13,4 @@ USER $NB_UID
|
|||||||
|
|
||||||
# Switch back to jovyan to avoid accidental container runs as root
|
# Switch back to jovyan to avoid accidental container runs as root
|
||||||
# Add permanent pip/conda installs, data files, other user libs here
|
# Add permanent pip/conda installs, data files, other user libs here
|
||||||
# e.g., RUN pip install jupyter_dashboards
|
# e.g., RUN pip install --quiet --no-cache-dir flake8
|
||||||
|
@@ -102,8 +102,8 @@ This means that so long as a set of notebook files provides one of these files l
|
|||||||
A final step is:
|
A final step is:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
fix-permissions $CONDA_DIR
|
fix-permissions "${CONDA_DIR}"
|
||||||
fix-permissions /home/$NB_USER
|
fix-permissions "/home/${NB_USER}"
|
||||||
```
|
```
|
||||||
|
|
||||||
This fixes up permissions on any new files created by the build. This is necessary to ensure that when the image is run, you can still install additional files. This is important for when an image is run in `sudo` mode, or it is hosted in a more secure container platform such as Kubernetes/OpenShift where it will be run as a set user ID that isn't known in advance.
|
This fixes up permissions on any new files created by the build. This is necessary to ensure that when the image is run, you can still install additional files. This is important for when an image is run in `sudo` mode, or it is hosted in a more secure container platform such as Kubernetes/OpenShift where it will be run as a set user ID that isn't known in advance.
|
||||||
|
@@ -49,4 +49,7 @@ RUN conda install --quiet --yes \
|
|||||||
fix-permissions "/home/${NB_USER}"
|
fix-permissions "/home/${NB_USER}"
|
||||||
|
|
||||||
# Install e1071 R package (dependency of the caret R package)
|
# Install e1071 R package (dependency of the caret R package)
|
||||||
RUN conda install --quiet --yes r-e1071
|
RUN conda install --quiet --yes r-e1071 && \
|
||||||
|
conda clean --all -f -y && \
|
||||||
|
fix-permissions "${CONDA_DIR}" && \
|
||||||
|
fix-permissions "/home/${NB_USER}"
|
||||||
|
@@ -8,6 +8,6 @@ LABEL maintainer="Jupyter Project <jupyter@googlegroups.com>"
|
|||||||
# Install Tensorflow
|
# Install Tensorflow
|
||||||
RUN mamba install --quiet --yes \
|
RUN mamba install --quiet --yes \
|
||||||
'tensorflow=2.4.1' && \
|
'tensorflow=2.4.1' && \
|
||||||
conda clean --all -f -y && \
|
mamba clean --all -f -y && \
|
||||||
fix-permissions "${CONDA_DIR}" && \
|
fix-permissions "${CONDA_DIR}" && \
|
||||||
fix-permissions "/home/${NB_USER}"
|
fix-permissions "/home/${NB_USER}"
|
||||||
|
Reference in New Issue
Block a user