Skip to content

(GPU accelerated) Multi-arch (linux/amd64, linux/arm64/v8) JupyterLab QGIS docker images. Please submit Pull Requests to the GitLab repository. Mirror of

License

Notifications You must be signed in to change notification settings

b-data/jupyterlab-qgis-docker-stack

Repository files navigation

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

See the CUDA-based JupyterLab QGIS docker stack for GPU accelerated docker images.

JupyterLab QGIS docker stack

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

Images considered stable for QGIS versions ≥ 3.28.4.

Screenshot

Features

  • JupyterLab: A web-based interactive development environment for Jupyter notebooks, code, and data. The images include
    • Git: A distributed version-control system for tracking changes in source code.
    • Python: An interpreted, object-oriented, high-level programming language with dynamic semantics.
    • TurboVNC: A high-speed version of VNC derived from TightVNC.
      ℹ️ Tuned to maximize performance for image-intensive applications.
    • Zsh: A shell designed for interactive use, although it is also a powerful scripting language.
    • Xfce (via noVNC + TurboVNC): A lightweight desktop environment for UNIX-like operating systems.
      • GRASS GIS: A free and open source Geographic Information System (GIS).
      • Orfeo Toolbox: An open-source project for state-of-the-art remote sensing.
        ℹ️ amd64 only
      • QGIS: A free, open source, cross platform (lin/win/mac) geographical information system (GIS).
      • SAGA GIS: A Geographic Information System (GIS) software with immense capabilities for geodata processing and analysis.

👉 See the Version Matrix for detailed information.

Subtags

  • {QGIS_VERSION,latest,ltr}-root: Container runs as root

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 QGIS_VERSION=3.44.1 \
  --build-arg SAGA_VERSION=9.1.3 \
  --build-arg OTB_VERSION=9.1.1 \
  --build-arg PROC_SAGA_NG_VERSION=1.0.0 \
  --build-arg PYTHON_VERSION=3.12.11 \
  --build-arg GIT_VERSION=2.50.1 \
  -t jupyterlab/qgis/base \
  -f Dockerfile .

ltr:

cd base && docker build \
  --build-arg QGIS_VERSION=3.40.9 \
  --build-arg SAGA_VERSION=9.1.3 \
  --build-arg OTB_VERSION=9.1.1 \
  --build-arg PROC_SAGA_NG_VERSION=1.0.0 \
  --build-arg PYTHON_VERSION=3.12.11 \
  --build-arg GIT_VERSION=2.50.1 \
  -t jupyterlab/qgis/base:ltr \
  -f Dockerfile .

version:

cd base && docker build \
  -t jupyterlab/qgis/base:MAJOR.MINOR.PATCH \
  -f MAJOR.MINOR.PATCH.Dockerfile .

For MAJOR.MINOR.PATCH3.28.4.

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.
Bind mounting a subfolder of the home directory is only possible for images with QGIS version ≥ 3.34.4.

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) \
  -e CHOWN_HOME=yes \
  -e CHOWN_HOME_OPTS='-R' \
  jupyterlab/qgis/base{:ltr,: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) \
  -e CHOWN_HOME=yes \
  -e CHOWN_HOME_OPTS='-R' \
  IMAGE{:ltr,: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.

-e CHOWN_HOME=yes -e CHOWN_HOME_OPTS='-R' instructs the startup script to recursively change the ${NB_USER} home directory owner and group to the current value of ${NB_UID} and ${NB_GID}.
ℹ️ This is only required for the first run.

The server logs appear in the terminal.

Using Podman (rootless mode, 3.34.0+, 3.28.12+ (LTR))

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{:ltr,: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{:ltr,:MAJOR[.MINOR[.PATCH]]}

might be sufficient.

Similar projects

What makes this project different:

  1. Multi-arch: linux/amd64, linux/arm64/v8
    ℹ️ Runs on Apple M series using Docker Desktop.
  2. Base image: Debian instead of Ubuntu
    ℹ️ CUDA-based images are Ubuntu-based.
  3. TurboVNC: High-speed VNC version
  4. Just Python – no Conda / Mamba

See Notes for tweaks, settings, etc.

Contributing

PRs accepted.

This project follows the Contributor Covenant Code of Conduct.

Support

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

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

  • Integration of self-signed CA certificates to enable communication with web services on the intranet.
  • Setting up the necessary environment variables so that everything works behind a corporate proxy server.
  • If supported by the NVIDIA GPU(s): Correctly handle CUDA forward compatibility for GPU accelerated images.

Additionally, the JupyterHub setup can be customised to allow

  • authentication with AD/LDAP
  • mounting CIFS/SMB file shares

and much more.

Sponsors

Work partially funded by

Agroscope

License

Copyright © 2023 b-data GmbH

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

About

(GPU accelerated) Multi-arch (linux/amd64, linux/arm64/v8) JupyterLab QGIS docker images. Please submit Pull Requests to the GitLab repository. Mirror of

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Sponsor this project

  •  

Languages

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy