Use Alpine 3.19 as base image to ensure we get GhostScript 10.2.1 to eliminate serious regressions that corrupt PDFs with existing text.
84 lines
1.7 KiB
Docker
84 lines
1.7 KiB
Docker
# SPDX-FileCopyrightText: 2023 James R. Barlow
|
|
# SPDX-License-Identifier: MPL-2.0
|
|
|
|
FROM alpine:3.19 as base
|
|
|
|
ENV LANG=C.UTF-8
|
|
ENV TZ=UTC
|
|
|
|
RUN apk add --no-cache \
|
|
python3 \
|
|
zlib
|
|
|
|
FROM base as builder
|
|
|
|
RUN apk add --no-cache \
|
|
ca-certificates \
|
|
git \
|
|
python3-dev \
|
|
py3-pip
|
|
|
|
# On arm64, we need to build cffi from source.
|
|
ARG TARGETPLATFORM
|
|
|
|
RUN if [ "${TARGETPLATFORM}" == "linux/arm64" ]; then \
|
|
apk add --no-cache \
|
|
build-base \
|
|
autoconf \
|
|
automake \
|
|
libtool \
|
|
zlib-dev \
|
|
libffi-dev \
|
|
cairo-dev \
|
|
pkgconfig \
|
|
; \
|
|
fi
|
|
|
|
COPY . /app
|
|
|
|
WORKDIR /app
|
|
|
|
RUN python3 -m venv .venv
|
|
|
|
RUN source .venv/bin/activate \
|
|
&& python3 -m pip install --no-cache-dir --upgrade pip \
|
|
&& python3 -m pip install --no-cache-dir wheel \
|
|
&& python3 -m pip install --no-cache-dir .[test,webservice,watcher]
|
|
|
|
FROM base
|
|
|
|
RUN apk add --no-cache \
|
|
ghostscript \
|
|
jbig2dec \
|
|
jbig2enc \
|
|
pngquant \
|
|
tesseract-ocr \
|
|
tesseract-ocr-data-chi_sim \
|
|
tesseract-ocr-data-deu \
|
|
tesseract-ocr-data-eng \
|
|
tesseract-ocr-data-fra \
|
|
tesseract-ocr-data-osd \
|
|
tesseract-ocr-data-por \
|
|
tesseract-ocr-data-spa \
|
|
ttf-droid \
|
|
unpaper \
|
|
&& rm -rf /var/cache/apk/*
|
|
|
|
WORKDIR /app
|
|
|
|
COPY --from=builder /usr/local/lib/ /usr/local/lib/
|
|
COPY --from=builder /usr/local/bin/ /usr/local/bin/
|
|
|
|
COPY --from=builder /app/.venv/ /app/.venv/
|
|
|
|
COPY --from=builder /app/misc/webservice.py /app/
|
|
COPY --from=builder /app/misc/watcher.py /app/
|
|
|
|
# Copy minimal project files to get the test suite.
|
|
COPY --from=builder /app/pyproject.toml /app/README.md /app/
|
|
COPY --from=builder /app/tests /app/tests
|
|
|
|
ENV PATH="/app/.venv/bin:${PATH}"
|
|
|
|
ENTRYPOINT ["/app/.venv/bin/ocrmypdf"]
|