# pikepdf uses vX.Y.Z
pikepdf_git_tag="v${pikepdf_version}"
+# https://docs.docker.com/develop/develop-images/build_enhancements/
+export DOCKER_BUILDKIT=1
+
docker build --file "$1" \
--build-arg JBIG2ENC_VERSION="${jbig2enc_version}" \
--build-arg QPDF_VERSION="${qpdf_version}" \
# Inputs:
# - JBIG2ENC_VERSION - the Git tag to checkout and build
-FROM debian:bullseye-slim
+FROM debian:bullseye-slim as main
LABEL org.opencontainers.image.description="A intermediate image with jbig2enc built"
# This does nothing, except provide a name for a copy below
-FROM python:3.9-slim-bullseye
+FROM python:3.9-slim-bullseye as main
LABEL org.opencontainers.image.description="A intermediate image with pikepdf wheel built"
ARG BUILD_PACKAGES="\
build-essential \
+ python3-dev \
+ python3-pip \
git \
- libjpeg62-turbo-dev \
- zlib1g-dev \
+ # qpdf requirement - https://github.com/qpdf/qpdf#crypto-providers
libgnutls28-dev \
+ # lxml requrements - https://lxml.de/installation.html
libxml2-dev \
libxslt1-dev \
- python3-dev \
- python3-pip"
+ # Pillow requirements - https://pillow.readthedocs.io/en/stable/installation.html
+ # JPEG functionality
+ libjpeg62-turbo-dev \
+ # conpressed PNG
+ zlib1g-dev \
+ # compressed TIFF
+ libtiff-dev \
+ # type related services
+ libfreetype-dev \
+ # color management
+ liblcms2-dev \
+ # WebP format
+ libwebp-dev \
+ # JPEG 2000
+ libopenjp2-7-dev \
+ # improved color quantization
+ libimagequant-dev \
+ # complex text layout support
+ libraqm-dev"
WORKDIR /usr/src
&& apt-get install --yes --quiet --no-install-recommends $BUILD_PACKAGES \
&& dpkg --install libqpdf28_*.deb \
&& dpkg --install libqpdf-dev_*.deb \
- && python3 -m pip install --no-cache-dir --upgrade pip wheel pybind11 \
+ && python3 -m pip install --no-cache-dir --upgrade \
+ pip \
+ wheel \
+ # https://pikepdf.readthedocs.io/en/latest/installation.html#requirements
+ pybind11 \
&& rm -rf /var/lib/apt/lists/*
# Layers after this point change according to required version
# - PSYCOPG2_GIT_TAG - The Git tag to clone and build from
# - PSYCOPG2_VERSION - Unused, kept for future possible usage
-FROM python:3.9-slim-bullseye
+FROM python:3.9-slim-bullseye as main
LABEL org.opencontainers.image.description="A intermediate image with psycopg2 wheel built"
ARG BUILD_PACKAGES="\
build-essential \
git \
- libpq-dev \
python3-dev \
- python3-pip"
+ python3-pip \
+ # https://www.psycopg.org/docs/install.html#prerequisites
+ libpq-dev"
WORKDIR /usr/src
-FROM debian:bullseye-slim
+FROM debian:bullseye-slim as main
LABEL org.opencontainers.image.description="A intermediate image with qpdf built"
devscripts \
equivs \
libtool \
+ # https://qpdf.readthedocs.io/en/stable/installation.html#system-requirements
libjpeg62-turbo-dev \
libgnutls28-dev \
packaging-dev \