65 lines
2.2 KiB
Plaintext
65 lines
2.2 KiB
Plaintext
|
ARG BASE_CONTAINER=betalupi/jupyter-base
|
||
|
FROM $BASE_CONTAINER
|
||
|
LABEL maintainer="Mark <mark@betalupi.com>"
|
||
|
|
||
|
ARG SAGE_VERSION=9.0
|
||
|
ARG SAGE_PYTHON_VERSION=3.7
|
||
|
|
||
|
USER root
|
||
|
|
||
|
RUN apt-get update --yes && apt-get install --yes --no-install-recommends \
|
||
|
dvipng \
|
||
|
ffmpeg \
|
||
|
imagemagick \
|
||
|
texlive \
|
||
|
tk tk-dev \
|
||
|
jq && \
|
||
|
apt-get clean && rm -rf /var/lib/apt/lists/*
|
||
|
|
||
|
|
||
|
USER $NB_UID
|
||
|
|
||
|
# Initialize conda for shell interaction
|
||
|
RUN conda init bash
|
||
|
|
||
|
# Install Sage conda environment
|
||
|
RUN conda install --quiet --yes -n base -c conda-forge widgetsnbextension && \
|
||
|
conda create --quiet --yes -n sage -c conda-forge sage=$SAGE_VERSION python=$SAGE_PYTHON_VERSION && \
|
||
|
conda clean --all -f -y && \
|
||
|
npm cache clean --force && \
|
||
|
fix-permissions $CONDA_DIR && \
|
||
|
fix-permissions /home/$NB_USER
|
||
|
|
||
|
# Install sagemath kernel and extensions using conda run:
|
||
|
# Create jupyter directories if they are missing
|
||
|
# Add environmental variables to sage kernal using jq
|
||
|
RUN echo ' \
|
||
|
from sage.repl.ipython_kernel.install import SageKernelSpec; \
|
||
|
SageKernelSpec.update(prefix=os.environ["CONDA_DIR"]); \
|
||
|
' | conda run -n sage sage && \
|
||
|
echo ' \
|
||
|
cat $SAGE_ROOT/etc/conda/activate.d/sage-activate.sh | \
|
||
|
grep -Po '"'"'(?<=^export )[A-Z_]+(?=)'"'"' | \
|
||
|
jq --raw-input '"'"'.'"'"' | jq -s '"'"'.'"'"' | \
|
||
|
jq --argfile kernel $SAGE_LOCAL/share/jupyter/kernels/sagemath/kernel.json \
|
||
|
'"'"'. | map(. as $k | env | .[$k] as $v | {($k):$v}) | add as $vars | $kernel | .env= $vars'"'"' > \
|
||
|
$CONDA_DIR/share/jupyter/kernels/sagemath/kernel.json \
|
||
|
' | conda run -n sage sh && \
|
||
|
fix-permissions $CONDA_DIR && \
|
||
|
fix-permissions /home/$NB_USER
|
||
|
|
||
|
# Install sage's python kernel
|
||
|
RUN echo ' \
|
||
|
ls /opt/conda/envs/sage/share/jupyter/kernels/ | \
|
||
|
grep -Po '"'"'python\d'"'"' | \
|
||
|
xargs -I % sh -c '"'"' \
|
||
|
cd $SAGE_LOCAL/share/jupyter/kernels/% && \
|
||
|
cat kernel.json | \
|
||
|
jq '"'"'"'"'"'"'"'"' . | .display_name = .display_name + " (sage)" '"'"'"'"'"'"'"'"' > \
|
||
|
kernel.json.modified && \
|
||
|
mv -f kernel.json.modified kernel.json && \
|
||
|
ln -s $SAGE_LOCAL/share/jupyter/kernels/% $CONDA_DIR/share/jupyter/kernels/%_sage \
|
||
|
'"'"' \
|
||
|
' | conda run -n sage sh && \
|
||
|
fix-permissions $CONDA_DIR && \
|
||
|
fix-permissions /home/$NB_USER
|