b-data / jupyterlab-mojo-docker-stack

Multi-arch (linux/amd64, linux/arm64/v8) JupyterLab Mojo docker images. Please submit Pull Requests to the GitLab repository. Mirror of
https://gitlab.com/b-data/jupyterlab/mojo/docker-stack
Other
1 stars 0 forks source link
ai artificial-intelligence code-oss code-server data-science docker images jupyterlab language machine-learning marimo ml mojo multi-arch pluto programming-language

JupyterLab Mojo docker stack

minimal-readme compliant Project Status: Active – The project has reached a stable, usable state and is being actively developed. Donate using Liberapay

Multi-arch (linux/amd64, linux/arm64/v8) docker images:

Images considered stable for Mojo versions ≥ 24.3.0.

:microscope: Check out jupyterlab/mojo/scipy at https://demo.jupyter.b-data.ch.

Screenshot

Build chain

base → scipy

Features

:point_right: See the Version Matrix for detailed information.

The following extensions are pre-installed for code-server:

Subtags

:information_source: See also Notes on subtag devtools.

Table of Contents

Prerequisites

This projects requires an installation of docker.

Install

To install docker, follow the instructions for your platform:

Usage

Build image (base)

latest:

cd base && docker build \
  --build-arg MODULAR_VERSION=0.8.0 \
  --build-arg MODULAR_AUTH_KEY=<your-modular-auth-key> \
  --build-arg MOJO_VERSION=24.4.0 \
  --build-arg PYTHON_VERSION=3.12.4 \
  -t jupyterlab/mojo/base \
  -f latest.Dockerfile .

version:

cd base && docker build \
  --build-arg MODULAR_AUTH_KEY=<your-modular-auth-key> \
  -t jupyterlab/mojo/base:MAJOR.MINOR.PATCH \
  -f MAJOR.MINOR.PATCH.Dockerfile .

For MAJOR.MINOR.PATCH24.3.0.

Create home directory

Create an empty directory using docker:

docker run --rm \
  -v "${PWD}/jupyterlab-jovyan":/dummy \
  alpine chown 1000:100 /dummy

It will be bind mounted as the JupyterLab user's home directory and automatically populated.

Run container

self built:

docker run -it --rm \
  -p 8888:8888 \
  -u root \
  -v "${PWD}/jupyterlab-jovyan":/home/jovyan \
  -e NB_UID=$(id -u) \
  -e NB_GID=$(id -g) \
  jupyterlab/mojo/base[:MAJOR.MINOR.PATCH]

from the project's GitLab Container Registries:

docker run -it --rm \
  -p 8888:8888 \
  -u root \
  -v "${PWD}/jupyterlab-jovyan":/home/jovyan \
  -e NB_UID=$(id -u) \
  -e NB_GID=$(id -g) \
  IMAGE[:MAJOR[.MINOR[.PATCH]]]

IMAGE being one of

The use of the -v flag in the command mounts the empty directory on the host (${PWD}/jupyterlab-jovyan in the command) as /home/jovyan in the container.

-e NB_UID=$(id -u) -e NB_GID=$(id -g) instructs the startup script to switch the user ID and the primary group ID of ${NB_USER} to the user and group ID of the one executing the command.

The server logs appear in the terminal.

Using Podman (rootless mode)

Create an empty home directory:

mkdir "${PWD}/jupyterlab-root"

Use the following command to run the container as root:

podman run -it --rm \
  -p 8888:8888 \
  -u root \
  -v "${PWD}/jupyterlab-root":/home/root \
  -e NB_USER=root \
  -e NB_UID=0 \
  -e NB_GID=0 \
  -e NOTEBOOK_ARGS="--allow-root" \
  IMAGE[:MAJOR[.MINOR[.PATCH]]]

Using Docker Desktop

Creating a home directory might not be required. Also

docker run -it --rm \
  -p 8888:8888 \
  -v "${PWD}/jupyterlab-jovyan":/home/jovyan \
  IMAGE[:MAJOR[.MINOR[.PATCH]]]

might be sufficient.

Misc

marimo

To add a JupyterLab Launcher icon for marimo:

  1. Terminal: Install marimo and click

    pip install marimo click
  2. Terminal: Install jupyter-marimo-proxy

    pip install git+https://github.com/b-data/jupyter-marimo-proxy.git@jupyterlab-docker-stack
  3. Restart the container

Similar projects

What makes this project different:

  1. Multi-arch: linux/amd64, linux/arm64/v8
    :information_source: Runs on Apple M series using Docker Desktop.
  2. Base image: Debian instead of Ubuntu
    :information_source: Upcoming: CUDA-based images use Ubuntu.
  3. IDE: code-server next to JupyterLab
    :information_source: code-server = Code - OSS in the browser.
  4. Just Python – no Conda / Mamba

See Notes for tweaks, settings, etc.

Contributing

PRs accepted. Please submit to the GitLab repository.

This project follows the Contributor Covenant Code of Conduct.

Support

Community support: Open a new disussion here. Commercial support: Contact b-data by email.

b-data tailors the JupyterLab images to your needs, e.g.

Additionally, the JupyterHub setup can be customised to allow

and much more.

License

Copyright © 2024 b-data GmbH

Distributed under the terms of the MIT License, with exceptions.