Skip to content

Commit

Permalink
Merge pull request #282 from ctr26/binder
Browse files Browse the repository at this point in the history
Binder
  • Loading branch information
ctr26 authored Aug 23, 2023
2 parents 0d2bcef + 8b1528f commit b2d9172
Show file tree
Hide file tree
Showing 22 changed files with 964 additions and 0 deletions.
252 changes: 252 additions & 0 deletions .binder/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,252 @@

# FROM buildpack-deps:bionic
# FROM nvidia/container-toolkit:1.6.0-ubuntu18.04
# FROM datmo/buildpack-deps:gpu
FROM floydhub/buildpack-deps:cuda10.0-cudnn7-1.0
# packaging dependencies
# ENV DEBIAN_FRONTEND=noninteractive
# RUN apt-get update && apt-get install -y --no-install-recommends \
# dh-make \
# fakeroot \
# build-essential \
# devscripts \
# lsb-release && \
# rm -rf /var/lib/apt/lists/*

# # packaging
# ARG PKG_VERS
# ARG PKG_REV
# ARG RUNTIME_VERSION
# ARG DOCKER_VERSION

# ENV DEBFULLNAME "NVIDIA CORPORATION"
# ENV DEBEMAIL "[email protected]"
# ENV REVISION "$PKG_VERS-$PKG_REV"
# ENV DOCKER_VERSION $DOCKER_VERSION
# ENV RUNTIME_VERSION $RUNTIME_VERSION
# ENV SECTION ""

# # output directory
# ENV DIST_DIR=/tmp/nvidia-docker2-$PKG_VERS
# RUN mkdir -p $DIST_DIR /dist

# # nvidia-docker 2.0
# COPY .binder/nvidia-docker $DIST_DIR/nvidia-docker
# COPY .binder/daemon.json $DIST_DIR/daemon.json

# WORKDIR $DIST_DIR
# COPY .binder/debian ./debian

# # RUN sed -i "s;@VERSION@;${REVISION};" debian/changelog && \
# # sed -i "s;@VERSION@;${PKG_VERS};" $DIST_DIR/nvidia-docker && \
# # if [ "$REVISION" != "$(dpkg-parsechangelog --show-field=Version)" ]; then echo "$(dpkg-parsechangelog --show-field=Version)" && exit 1; fi

# # CMD export DISTRIB="$(lsb_release -cs)" && \
# # debuild --preserve-env --dpkg-buildpackage-hook='sh debian/prepare' -i -us -uc -b && \
# # mv /tmp/*.deb /dist

# RUN set -eux; \
# apt-get update; \
# apt-get install -y --no-install-recommends \
# ca-certificates \
# curl \
# netbase \
# wget \
# # https://bugs.debian.org/929417
# tzdata \
# ; \
# rm -rf /var/lib/apt/lists/*

# RUN set -ex; \
# if ! command -v gpg > /dev/null; then \
# apt-get update; \
# apt-get install -y --no-install-recommends \
# gnupg \
# dirmngr \
# ; \
# rm -rf /var/lib/apt/lists/*; \
# fi

# # procps is very common in build systems, and is a reasonably small package
# RUN apt-get update && apt-get install -y --no-install-recommends \
# bzr \
# git \
# mercurial \
# openssh-client \
# subversion \
# \
# procps \
# && rm -rf /var/lib/apt/lists/*


# RUN set -ex; \
# apt-get update; \
# apt-get install -y --no-install-recommends \
# autoconf \
# automake \
# bzip2 \
# dpkg-dev \
# file \
# g++ \
# gcc \
# imagemagick \
# libbz2-dev \
# libc6-dev \
# libcurl4-openssl-dev \
# libdb-dev \
# libevent-dev \
# libffi-dev \
# libgdbm-dev \
# libglib2.0-dev \
# libgmp-dev \
# libjpeg-dev \
# libkrb5-dev \
# liblzma-dev \
# libmagickcore-dev \
# libmagickwand-dev \
# libmaxminddb-dev \
# libncurses5-dev \
# libncursesw5-dev \
# libpng-dev \
# libpq-dev \
# libreadline-dev \
# libsqlite3-dev \
# libssl-dev \
# libtool \
# libwebp-dev \
# libxml2-dev \
# libxslt-dev \
# libyaml-dev \
# make \
# patch \
# unzip \
# xz-utils \
# zlib1g-dev \
# \
# # https://lists.debian.org/debian-devel-announce/2016/09/msg00000.html
# $( \
# # if we use just "apt-cache show" here, it returns zero because "Can't select versions from package 'libmysqlclient-dev' as it is purely virtual", hence the pipe to grep
# if apt-cache show 'default-libmysqlclient-dev' 2>/dev/null | grep -q '^Version:'; then \
# echo 'default-libmysqlclient-dev'; \
# else \
# echo 'libmysqlclient-dev'; \
# fi \
# ) \
# ; \
# rm -rf /var/lib/apt/lists/*

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get -qq update && apt-get -qq install --yes --no-install-recommends locales > /dev/null && apt-get -qq purge && apt-get -qq clean && rm -rf /var/lib/apt/lists/*

RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && locale-gen

ENV LC_ALL en_US.UTF-8

ENV LANG en_US.UTF-8

ENV LANGUAGE en_US.UTF-8

ENV SHELL /bin/bash

ARG NB_USER

ARG NB_UID

ENV USER ${NB_USER}

ENV HOME /home/${NB_USER}

RUN groupadd --gid ${NB_UID} ${NB_USER} && useradd --comment "Default user" --create-home --gid ${NB_UID} --no-log-init --shell /bin/bash --uid ${NB_UID} ${NB_USER}

RUN wget --quiet -O - https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - && DISTRO="bionic" && echo "deb https://deb.nodesource.com/node_14.x $DISTRO main" >> /etc/apt/sources.list.d/nodesource.list && echo "deb-src https://deb.nodesource.com/node_14.x $DISTRO main" >> /etc/apt/sources.list.d/nodesource.list

RUN apt-get -qq update && apt-get -qq install --yes --no-install-recommends less nodejs unzip > /dev/null && apt-get -qq purge && apt-get -qq clean && rm -rf /var/lib/apt/lists/*


EXPOSE 8888

ENV APP_BASE /srv

ENV NPM_DIR ${APP_BASE}/npm

ENV NPM_CONFIG_GLOBALCONFIG ${NPM_DIR}/npmrc

ENV CONDA_DIR ${APP_BASE}/conda

ENV NB_PYTHON_PREFIX ${CONDA_DIR}/envs/notebook

ENV KERNEL_PYTHON_PREFIX ${NB_PYTHON_PREFIX}

ENV PATH ${NB_PYTHON_PREFIX}/bin:${CONDA_DIR}/bin:${NPM_DIR}/bin:${PATH}

ENV NB_ENVIRONMENT_FILE="/tmp/environment.py-3.7.lock"

COPY --chown=${NB_USER}:${NB_USER} .binder/environment.py-3.7.lock ${NB_ENVIRONMENT_FILE}

COPY --chown=${NB_USER}:${NB_USER} .binder/activate_conda.sh /etc/profile.d/activate-conda.sh

RUN chmod +x /etc/profile.d/activate-conda.sh

COPY --chown=${NB_USER}:${NB_USER} .binder/environment.yml /tmp/environment.yml

COPY --chown=${NB_USER}:${NB_USER} .binder/install_miniforge.sh /tmp/install-miniforge.bash

RUN chmod +x /tmp/install-miniforge.bash

RUN mkdir -p ${NPM_DIR} && chown -R ${NB_USER}:${NB_USER} ${NPM_DIR}

USER ${NB_USER}

RUN npm config --global set prefix ${NPM_DIR}

USER root

RUN TIMEFORMAT='time: %3R' bash -c 'time /tmp/install-miniforge.bash' && rm /tmp/install-miniforge.bash ${NB_ENVIRONMENT_FILE}

ARG REPO_DIR=${HOME}

ENV REPO_DIR ${REPO_DIR}


WORKDIR ${REPO_DIR}

RUN chown ${NB_USER}:${NB_USER} ${REPO_DIR}


ENV PATH ${HOME}/.local/bin:${REPO_DIR}/.local/bin:${PATH}


ENV CONDA_DEFAULT_ENV ${KERNEL_PYTHON_PREFIX}


COPY --chown=${USER}:${USER} .binder/environment.yml ${REPO_DIR}/.binder/environment.yml

COPY --chown=${USER}:${USER} . ${REPO_DIR}

RUN chmod +x "${REPO_DIR}/.binder/postBuildAdmin" && "${REPO_DIR}/.binder/postBuildAdmin"

USER ${NB_USER}


RUN TIMEFORMAT='time: %3R' bash -c 'time mamba env update -p ${NB_PYTHON_PREFIX} -f ".binder/environment.yml" && time mamba clean --all -f -y && mamba list -p ${NB_PYTHON_PREFIX} '


LABEL repo2docker.ref="None"

LABEL repo2docker.repo="local"

LABEL repo2docker.version="2021.01.0"


# COPY --chown=${USER}:${USER} . {REPO_DIR}

USER ${NB_USER}

RUN chmod +x .binder/postBuild && "${REPO_DIR}/.binder/postBuild"

RUN chmod +x "${REPO_DIR}/.binder/start"
ENV R2D_ENTRYPOINT "${REPO_DIR}/.binder/start"
# COPY /repo2docker-entrypoint /usr/local/bin/repo2docker-entrypoint
# ENTRYPOINT ["/usr/local/bin/repo2docker-entrypoint"]
CMD ["jupyter", "notebook", "--ip", "0.0.0.0"]
18 changes: 18 additions & 0 deletions .binder/activate_conda.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# enable conda and activate the notebook environment
CONDA_PROFILE="${CONDA_DIR}/etc/profile.d/conda.sh"
test -f $CONDA_PROFILE && . $CONDA_PROFILE
if [[ "${KERNEL_PYTHON_PREFIX}" != "${NB_PYTHON_PREFIX}" ]]; then
# if the kernel is a separate env, stack them
# so both are on PATH, notebook first
conda activate ${KERNEL_PYTHON_PREFIX}
conda activate --stack ${NB_PYTHON_PREFIX}

# even though it's second on $PATH
# make sure CONDA_DEFAULT_ENV is the *kernel* env
# so that `!conda install PKG` installs in the kernel env
# where user packages are installed, not the notebook env
# which only contains UI when the two are different
export CONDA_DEFAULT_ENV="${KERNEL_PYTHON_PREFIX}"
else
conda activate ${NB_PYTHON_PREFIX}
fi
8 changes: 8 additions & 0 deletions .binder/daemon.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
36 changes: 36 additions & 0 deletions .binder/debian/changelog
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
nvidia-docker2 (2.6.0-1) UNRELEASED; urgency=medium

* Add dependence on nvidia-container-runtime >= 3.5.0
* Add Jenkinsfile for building packages

-- NVIDIA CORPORATION <[email protected]> Thu, 29 Apr 2021 05:25:25 +0000

nvidia-docker2 (2.5.0-1) UNRELEASED; urgency=medium

* Bump version to v2.5.0
* Add dependence on nvidia-container-runtime >= 3.4.0
* Update readme to point to the official documentatio
* Add %config directive to daemon.json for RPM installations

-- NVIDIA CORPORATION <[email protected]> Wed, 16 Sep 2020 13:55:52 +0000

nvidia-docker2 (2.4.0-1) UNRELEASED; urgency=medium

* 09a01276 Update package license to match source license
* b9c70155 Update dependence on nvidia-container-runtime to 3.3.0

-- NVIDIA CORPORATION <[email protected]> Wed, 08 Jul 2020 20:33:10 +0000

nvidia-docker2 (2.3.0-1) UNRELEASED; urgency=medium

* 0d3b049a Update build system to support multi-arch builds
* 8557216d Require new MIG changes

-- NVIDIA CORPORATION <[email protected]> Fri, 15 May 2020 12:04:57 +0000

nvidia-docker2 (2.2.2-1) UNRELEASED; urgency=medium

* 2e9f20b Improve pass-through of docker arguments
* 4edca2f Pave the way for a hypothetical transitional package from v1

-- NVIDIA CORPORATION <[email protected]> Wed, 07 Mar 2018 04:06:38 +0000
1 change: 1 addition & 0 deletions .binder/debian/compat
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
9
18 changes: 18 additions & 0 deletions .binder/debian/control
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
Source: nvidia-docker2
Section: @SECTION@utils
Priority: optional
Maintainer: NVIDIA CORPORATION <[email protected]>
Standards-Version: 3.9.8
Homepage: https://github.com/NVIDIA/nvidia-docker/wiki
Vcs-Git: https://github.com/NVIDIA/nvidia-docker
Vcs-Browser: https://github.com/NVIDIA/nvidia-docker
Build-Depends: debhelper (>= 9)

Package: nvidia-docker2
Architecture: all
Breaks: nvidia-docker (<< 2.0.0)
Replaces: nvidia-docker (<< 2.0.0)
Depends: ${misc:Depends}, nvidia-container-runtime (>= @RUNTIME_VERSION@), @DOCKER_VERSION@
Description: nvidia-docker CLI wrapper
Replaces nvidia-docker with a new implementation based on
nvidia-container-runtime
Loading

0 comments on commit b2d9172

Please sign in to comment.