Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Binder #282

Merged
merged 17 commits into from
Aug 23, 2023
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
Loading