Skip to content

Commit

Permalink
Merge pull request #38 from briank-git/main
Browse files Browse the repository at this point in the history
Update DSCI 100 R and Python Docker Images
  • Loading branch information
trevorcampbell authored Jan 3, 2024
2 parents 15f86e3 + c49212b commit 9b29d51
Show file tree
Hide file tree
Showing 6 changed files with 130 additions and 10 deletions.
2 changes: 2 additions & 0 deletions docker/py-dsci-100/.gitconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[pull]
rebase = false
25 changes: 17 additions & 8 deletions docker/py-dsci-100/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,6 @@ WORKDIR "${HOME}/work"
# https://discourse.jupyter.org/t/debugger-warning-it-seems-that-frozen-modules-are-being-used-python-3-11-0/16544/12
ENV PYDEVD_DISABLE_FILE_VALIDATION=1

# update scikit-learn to the current @main (July 20, 2023)
# to get this merged PR: https://github.com/scikit-learn/scikit-learn/pull/26772
# which fixes this issue: https://github.com/scikit-learn/scikit-learn/issues/26768
RUN pip install --upgrade git+https://github.com/scikit-learn/scikit-learn@7de59b2017f39048880a3858d32c8caef9308954

# Install Python packages
RUN mamba install --quiet --yes \
'numpy' \
Expand All @@ -29,15 +24,16 @@ RUN mamba install --quiet --yes \
'ibis-framework' \
'nodejs' \
'psycopg2' \
'jupyter-resource-usage' \
&& mamba clean --all -f -y \
&& fix-permissions "${CONDA_DIR}" \
&& fix-permissions "/home/${NB_USER}"

# Install some recent python package that might not be on conda yet
RUN pip install pandas"<2.1" altair"==5.0.1" "vegafusion[embed]" vl-convert-python

# Install nbgitpuller, jlab-git
RUN pip install nbgitpuller jupyterlab-git \
# Install nbgitpuller, jlab-git, newest pexpect 4.9.0
RUN pip install nbgitpuller jupyterlab-git==0.50.0 pexpect==4.9.0 \
&& jupyter lab build

# Disable the cell toolbar (which ignores metadata and students often accidentally click + delete grading cells)
Expand All @@ -46,7 +42,20 @@ RUN jupyter labextension disable @jupyterlab/cell-toolbar-extension
# Install the extension to remove the shift+M merge shortcut
COPY shortcuts.jupyterlab-settings /home/${NB_USER}/.jupyter/lab/user-settings/\@jupyterlab/shortcuts-extension/shortcuts.jupyterlab-settings

# Make sure everything in the home folder is owned by NB_USER
# Copy jupyter_server_config.py which allows students to see and delete hidden files
COPY jupyter_server_config.py /home/${NB_USER}/.jupyter

# Copy gitconfig that sets global default pull strategy to merge
COPY .gitconfig /home/${NB_USER}/

USER root
# Install zip package
RUN apt install zip

# Make sure everything in the home folder is owned by NB_USER
RUN chown -R ${NB_USER} /home/${NB_USER}

USER ${NB_UID}

# Disable healthcheck for performance reasons
HEALTHCHECK NONE
49 changes: 49 additions & 0 deletions docker/py-dsci-100/jupyter_server_config.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Configuration file for jupyter-server.

c = get_config() #noqa

#------------------------------------------------------------------------------
# ContentsManager(LoggingConfigurable) configuration
#------------------------------------------------------------------------------
## Base class for serving files and directories.
#
# This serves any text or binary file,
# as well as directories,
# with special handling for JSON notebook documents.
#
# Most APIs take a path argument,
# which is always an API-style unicode path,
# and always refers to a directory.
#
# - unicode, not url-escaped
# - '/'-separated
# - leading and trailing '/' will be stripped
# - if unspecified, path defaults to '',
# indicating the root path.

## Allow access to hidden files
# Default: False
c.ContentsManager.allow_hidden = True

#------------------------------------------------------------------------------
# FileContentsManager(FileManagerMixin, ContentsManager) configuration
#------------------------------------------------------------------------------
## Allow access to hidden files
# See also: ContentsManager.allow_hidden
c.FileContentsManager.allow_hidden = True

#------------------------------------------------------------------------------
# AsyncContentsManager(ContentsManager) configuration
#------------------------------------------------------------------------------
## Base class for serving files and directories asynchronously.

## Allow access to hidden files
# See also: ContentsManager.allow_hidden
c.AsyncContentsManager.allow_hidden = True

#------------------------------------------------------------------------------
# AsyncFileContentsManager(FileContentsManager, AsyncFileManagerMixin, AsyncContentsManager) configuration
#------------------------------------------------------------------------------
## Allow access to hidden files
# See also: ContentsManager.allow_hidden
c.AsyncFileContentsManager.allow_hidden = True
2 changes: 2 additions & 0 deletions docker/r-dsci-100/.gitconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[pull]
rebase = false
13 changes: 11 additions & 2 deletions docker/r-dsci-100/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ RUN mamba install --quiet --yes \
'r-kknn' \
'r-testthat' \
'r-rpostgres' \
'jupyter-resource-usage' \
&& mamba clean --all -f -y \
&& fix-permissions "${CONDA_DIR}" \
&& fix-permissions "/home/${NB_USER}" \
Expand All @@ -32,8 +33,8 @@ RUN mamba install --quiet --yes \
&& Rscript -e "install.packages('tidyclust', repos='http://cran.us.r-project.org')" \
&& Rscript -e "install.packages('janitor', repos='http://cran.us.r-project.org')"

# Install nbgitpuller, jlab-git
RUN pip install nbgitpuller jupyterlab-git \
# Install nbgitpuller, jlab-git, newest pexpect 4.9.0
RUN pip install nbgitpuller jupyterlab-git pexpect==4.9.0 \
&& jupyter lab build

# Disable the cell toolbar (which ignores metadata and students often accidentally click + delete grading cells)
Expand All @@ -42,8 +43,16 @@ RUN jupyter labextension disable @jupyterlab/cell-toolbar-extension
# Install the extension to remove the shift+M merge shortcut
COPY shortcuts.jupyterlab-settings /home/${NB_USER}/.jupyter/lab/user-settings/\@jupyterlab/shortcuts-extension/shortcuts.jupyterlab-settings

# Copy jupyter_server_config.py which allows students to see and delete hidden files
COPY jupyter_server_config.py /home/${NB_USER}/.jupyter

# Copy gitconfig that sets global default pull strategy to merge
COPY .gitconfig /home/${NB_USER}/

# Make sure everything in the home folder is owned by NB_USER
USER root
RUN chown -R ${NB_USER} /home/${NB_USER}
USER ${NB_UID}

# Disable healthcheck for performance reasons
HEALTHCHECK NONE
49 changes: 49 additions & 0 deletions docker/r-dsci-100/jupyter_server_config.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Configuration file for jupyter-server.

c = get_config() #noqa

#------------------------------------------------------------------------------
# ContentsManager(LoggingConfigurable) configuration
#------------------------------------------------------------------------------
## Base class for serving files and directories.
#
# This serves any text or binary file,
# as well as directories,
# with special handling for JSON notebook documents.
#
# Most APIs take a path argument,
# which is always an API-style unicode path,
# and always refers to a directory.
#
# - unicode, not url-escaped
# - '/'-separated
# - leading and trailing '/' will be stripped
# - if unspecified, path defaults to '',
# indicating the root path.

## Allow access to hidden files
# Default: False
c.ContentsManager.allow_hidden = True

#------------------------------------------------------------------------------
# FileContentsManager(FileManagerMixin, ContentsManager) configuration
#------------------------------------------------------------------------------
## Allow access to hidden files
# See also: ContentsManager.allow_hidden
c.FileContentsManager.allow_hidden = True

#------------------------------------------------------------------------------
# AsyncContentsManager(ContentsManager) configuration
#------------------------------------------------------------------------------
## Base class for serving files and directories asynchronously.

## Allow access to hidden files
# See also: ContentsManager.allow_hidden
c.AsyncContentsManager.allow_hidden = True

#------------------------------------------------------------------------------
# AsyncFileContentsManager(FileContentsManager, AsyncFileManagerMixin, AsyncContentsManager) configuration
#------------------------------------------------------------------------------
## Allow access to hidden files
# See also: ContentsManager.allow_hidden
c.AsyncFileContentsManager.allow_hidden = True

0 comments on commit 9b29d51

Please sign in to comment.