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.1 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"]
|