JupyterLab Container - activoricordi/notebooks GitHub Wiki
Jupyterlab Container
Base Container
Conda is a useful tool for managing application dependencies. Conda installs any package within conda environments.When combined with Docker, it is important to take a quite a number of considerations to avoid having a very large images.
Environment
Choose right Base Image
It is important to choose the right .For instance, it is prefereable to choose Python 3 images based on Debian instead of choosing using an Alpine. The reason for this behaviour is that most wheels are built for Debian and not for Alpine. Therefore, Python extensions with C or code from other languages need to be compiled for Alpine.
python:3.8-slim-buster
https://pythonspeed.com/docker
ARG NB_USER="notebooks"
ARG NB_UID="1000"
ARG NB_GID="100"
ENV DEBIAN_FRONTEND noninteractive
Python Package Manager
It is important to do mix the installation of the Linux and Python Package Manager
Install Mamba Package Manager
Again, we do not install anymore things with Conda.
Python Libraries
environment.yml
This is file used for creating Conda Virtual Environment
ADD environment.yml /tmp/environment.yml
RUN conda env create -f /tmp/environment.yml
# Pull the environment name out of the environment.yml
RUN echo "source activate $(head -1 /tmp/environment.yml | cut -d' ' -f2)" > ~/.bashrc
ENV PATH /opt/conda/envs/$(head -1 /tmp/environment.yml | cut -d' ' -f2)/bin:$PATH
This last step is from Conda environments with Docker
name: JupyterLab
channels:
- conda-forge
dependencies:
- pandas
- numpy
- scikit-learn
- ipywidgets
Set User
USER notebooks
WORKDIR /workspace
EXPOSE 9000