A Docker-based devcontainer for Jupyter Notebook's with a focus on Computer Vision, Machine Learning, Finance, Statistics and Visualization.
jupyter-devbox

A Docker-based development container for [Jupyter Notebooks][jupyter_website] with a focus on Computer Vision, Machine Learning, Finance, Statistics and Visualization.
It is designed especially for use with Visual Studio Code or any IDE that supports the devcontainer standard. The images can also be used in CI workflows.
Purpose
jupyter-devbox provides a portable, standardized container with a ready-to-use Jupyter Notebook environment for interactive Python development in [Visual Studio Code][vscode_website].
It ships with a curated set of scientific computing libraries, including OpenCV, TensorFlow, Keras, NumPy, Pandas, DuckDB, scikit-learn, SciPy, Matplotlib, Seaborn, imutils, and SQLAlchemy.
All Python packages are managed with uv for fast, reliable installs, making it easy to add project-specific dependencies. Additional developer tools include code formatters (Black, Ruff, isort), LSP support, spell checking, and execution timing.
Images
Base distribution
This repository provides Docker images based on Debian 13 (Trixie, stable).
The images support multiple architectures: [amd64][amd64dockerfile] and [arm64][arm64dockerfile].
Container Registries
The images are automatically published to Github Container Registry (GHCR) and Docker Hub (hub.docker.com) upon updates.
What is pre-installed?
Base: Debian 13 - Trixie
On top of the Debian base image the following tools are installed:
- zsh, git, cmake, nano
- curl, wget
- imagemagick, gnuplot, graphviz
- Python 3 (including pip, setuptools, wheel, venv, uv)
- C & C++ (g++, cmake, ninja)
- ipykernel docutils jupyter notebook jupyterhub
- jupyterlab-code-formatter watermark pyyaml pylint ruff black isort
- jupyterlab-lsp python-lsp-server python-lsp-black python-lsp-ruff python-lsp-isort
- jupyterlab-spellchecker
- jupyterlab-execute-time
- tensorflow
- matplotlib seaborn plotly graphviz
- keras
- opencv-python-headless
- imutils
- numpy pandas pandas-datareader bottleneck h5py
- scipy scikit-learn
- duckdb
- sqlalchemy
- requests_cache
- yfinance alpha_vantage nasdaq-data-link finnhub-python financetoolkit financedatabase
- statsmodels
You can run jupyter labextension list to list all enabled extensions.
Prerequisites
You need the following things to run this:
- Docker
- Visual Studio Code
How to run this?
There are two ways of setting the container up.
Either by building the container image locally or by fetching the prebuilt container image from the Github container registry.
Building the Container Image locally using VSCode
- Step 1. Get the source: clone this repository using git or download the zip
- Step 2. (optional) The repository contains multiple images.
dockerFile to use in ./devcontainer/devcontainer.json:
By default "dockerFile": "amd64/Dockerfile" is set.
For an image with architecture: - amd64 set amd64/Dockerfile - arm64, aarch64, arm64v8 set arm64v8/Dockerfile
- Step 3. In VSCode open the folder in a container (
Remote Containers: Open Folder in Container):
Starting Dev Container (show log): Building image..)
Which takes a while...
Then, finally...
- Step 4. Open the file
notebooks\test.ipynb
- Step 5. You might get a warning message for "untrusted" Notebook content.
Trust to allow running the content of the Notebook.
- Step 6. You are now able to edit cells and run their content interactively in VSCode.
- Enjoy! :sunglasses:
Fetching the prebuilt container image
This container image is published to the Github Container Registry (GHCR).
You may find the package here: [https://github.com/jakoch/jupyter-devbox/pkgs/container/jupyter-devbox][github_packages].
You can install the container image from the command line:
docker pull ghcr.io/jakoch/jupyter-devbox:latest
You might also use this container image as a base image in your own Dockerfile:
FROM ghcr.io/jakoch/jupyter-devbox:latest
Supported CPU Architectures
- x86_64 - linux/amd64
- aarch64 - linux/aarch64, linux/arm64/v8, linux/arm64v8
- not supported:
- You can check your platform and available features with
dpkg --print-architecture
- cat /proc/cpuinfo
[jupyter_website]:https://jupyter.org/ [vscode_website]:https://code.visualstudio.com/ [checkdevboxipynbmain]:https://github.com/jakoch/jupyter-devbox/blob/main/notebooks/checkdevbox.ipynb [amd64_dockerfile]:https://github.com/jakoch/jupyter-devbox/blob/main/.devcontainer/amd64/Dockerfile [arm64_dockerfile]:https://github.com/jakoch/jupyter-devbox/blob/main/.devcontainer/arm64/Dockerfile [github_packages]: https://github.com/jakoch/jupyter-devbox/pkgs/container/jupyter-devbox