Repository navigation
Slimmer images (-2.06 GB on pythonr, -258 MB on python), faster builds, and faster runtime defaults (OpenBLAS + GDAL threads + Arrow I/O) - #140
Merged
Conversation
…ilds, and multi-threaded OpenBLAS/GDAL/Arrow defaults
This was referenced Nov 2, 2026
This was referenced Nov 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR bundles image-size reductions, build-time speedups, and runtime compute optimizations across the
geocompxDocker suite:python/Dockerfile(-257.6 MB / -12.8% image size, -37% build time):build-essential(gcc,g++,libc6-dev) from the initialapt-get installlayer and drop the separateapt purgelayer (which left 283 MB in the immutable lower layer). All 144 Python 3.14 geospatial dependencies install from precompiledmanylinuxwheels viauv.GDAL_NUM_THREADS=ALL_CPUS,GDAL_CACHEMAX=512,VSI_CACHE=TRUE,GDAL_HTTP_MULTIPLEX=YES, andPYOGRIO_USE_ARROW=1.pythonr/Dockerfile(-2.06 GB / -33.2% image size, -17% build time):libblas-devwith multi-threadedlibopenblas0-pthread+libopenblas-dev(4.7x faster R matrix algebra).--no-install-recommends, symlink Quarto's bundledpandocto/usr/local/bin/pandoc, and setoptions(pkg.sysreqs = FALSE)duringpak::pak(...)sopakdoes not run an implicitapt-get -y installwithout--no-install-recommends(which previously pulled in ~1.8 GB ofdefault-jdk, duplicatepython3.13,libqgis-dev,grass84,saga, and duplicatepandoc).strip --strip-debug) from compiled R package.sobinaries in the sameRUNlayer.minimal/Dockerfile,minimal-slim/Dockerfile,suggests/Dockerfile,osgeo/Dockerfile:strip --strip-debugand/tmp+pkgcachecleanup into the sameRUNlayer as package installation (preventing OverlayFS layer duplication).libopenblas0-pthreadtominimal-slim/Dockerfileand set multi-threaded GDAL environment variables across all images.rocker-rpy/Dockerfile:uv pip installinstead of sequentialpip3to cut Python dependency installation time by >60%.rust/Dockerfile:jammyapt line (osmium-toolis natively innoble), use--profile minimalforrustup, and clean/tmp/tippecanoeand/root/.cargo/registryin the sameRUNlayer (~800 MB saved)..github/workflows/build-docker.yml:type=gha,mode=max).Before vs. After Benchmarks
master)geocompx/pythonimage sizegeocompx/pythonrimage sizegeocompx/pythonuncached build timegeocompx/pythonruncached build timecrossprod+solve, N=2500)terra::project(4x3600x3600 cubic warp)geopandas.read_file(200k points GPKG)PYOGRIO_USE_ARROW=1)