ULGIS is a Docker-image project that packages a reusable Ubuntu environment with Python tooling and core GIS libraries. It is meant to be a base image or toolbox for GIS-oriented work, not a standalone application container.
- Ubuntu 24.04 LTS tracked through Docker Official tag
noble-20260210.1and Ubuntu point release24.04.4 - Base utilities:
curl,wget,unzip,nano,tzdata - Python tooling:
pip,venv, development headers, and pinnedwheel,pillow,setuptools,poetry - GIS stack: PROJ, GEOS, GDAL,
python3-gdal, and supporting native packages
The Dockerfile is organized in three stages:
os: installs the base operating-system tools needed by the imagepython-os: adds Python, build dependencies, and pinned packaging toolsgis-os: adds GIS and native geospatial libraries
The final image does not copy application code, expose ports, or define a default command. It is a reusable base image.
Dockerfile: image definition.github/workflows/docker-image.yml: CI build, release-tag validation, and smoke checksdocs/docker-tips.md: local build and inspection commandsdocs/dockerhub.md: manual release and tagging flowdocs/release-policy.md: release-tag rules and release flowdocs/project-foundation.md: architecture, history, and maintainer baselinescripts/smoke-test-image.sh: reusable smoke checks for a built imagescripts/validate-release-tag.sh: release-tag validation against the Dockerfile Ubuntu metadata
Early releases used generic tags such as 0.0.1 and v.1.0.0. Since the Ubuntu 22.04 migration in May 2023, ULGIS tags have aligned with the Ubuntu base version, for example:
ulgis20.04ulgis22.04ulgis22.04.01ulgis22.04.02ulgis22.04.03
Those older tags remain valid historical releases. The current policy now separates:
- the Docker Official Ubuntu base tag used in
Dockerfile, currentlynoble-20260210.1 - the Ubuntu LTS point release tracked by ULGIS, currently
24.04.4 - the ULGIS release tag, for example
ulgis24.04.4-r2026.1
Current release note: the latest historical tagged release is ulgis22.04.03, while the next planned release under the new policy is ulgis24.04.4-r2026.1.
Optional alias tags such as ulgis24.04 and latest may still be published, but the full versioned release tag should remain the source of truth.
The current Dockerfile also pins the Python packaging toolchain through build arguments so rebuilds stay more stable inside the 24.04 release family.
Build the image from the repository root:
docker build -t maxdragonheart/ulgis:dev .Open a shell in the built image:
docker run --rm -it maxdragonheart/ulgis:dev bashRun the reusable smoke checks:
bash scripts/smoke-test-image.sh maxdragonheart/ulgis:devIf you intentionally need different pinned Python tooling for a release candidate, pass the build arguments explicitly and document the change:
docker build \
--build-arg POETRY_VERSION=2.3.2 \
--build-arg SETUPTOOLS_VERSION=82.0.1 \
-t maxdragonheart/ulgis:dev .