diff --git a/Containerfile b/Containerfile index bf7d20a..38be33d 100644 --- a/Containerfile +++ b/Containerfile @@ -2,8 +2,8 @@ ARG BASE_IMAGE=quay.io/sclorg/python-312-c9s:c9s FROM ${BASE_IMAGE} -ARG MODELS_LIST="layout tableformer picture_classifier easyocr" -ARG UV_SYNC_EXTRA_ARGS="" +ARG MODELS_LIST="layout tableformer picture_classifier easyocr" \ + UV_SYNC_EXTRA_ARGS="" USER 0 @@ -22,8 +22,6 @@ RUN --mount=type=bind,source=os-packages.txt,target=/tmp/os-packages.txt \ ENV TESSDATA_PREFIX=/usr/share/tesseract/tessdata/ -COPY --from=ghcr.io/astral-sh/uv:0.6.1 /uv /uvx /bin/ - ################################################################################################### # Docling layer # ################################################################################################### @@ -32,21 +30,22 @@ USER 1001 WORKDIR /opt/app-root/src -# On container environments, always set a thread budget to avoid undesired thread congestion. -ENV OMP_NUM_THREADS=4 +ENV \ + # On container environments, always set a thread budget to avoid undesired thread congestion. + OMP_NUM_THREADS=4 \ + LANG=en_US.UTF-8 \ + LC_ALL=en_US.UTF-8 \ + PYTHONIOENCODING=utf-8 \ + UV_COMPILE_BYTECODE=1 \ + UV_LINK_MODE=copy \ + UV_PROJECT_ENVIRONMENT=/opt/app-root \ + DOCLING_SERVE_ARTIFACTS_PATH=/opt/app-root/src/.cache/docling/models -ENV LANG=en_US.UTF-8 -ENV LC_ALL=en_US.UTF-8 -ENV PYTHONIOENCODING=utf-8 -ENV UV_COMPILE_BYTECODE=1 UV_LINK_MODE=copy -ENV UV_PROJECT_ENVIRONMENT=/opt/app-root - -ENV DOCLING_SERVE_ARTIFACTS_PATH=/opt/app-root/src/.cache/docling/models - -COPY --chown=1001:0 pyproject.toml uv.lock README.md ./ - -RUN --mount=type=cache,target=/opt/app-root/src/.cache/uv,uid=1001 \ - uv sync --frozen --no-install-project --no-dev --all-extras ${UV_SYNC_EXTRA_ARGS} # --no-extra ${NO_EXTRA} +RUN --mount=from=ghcr.io/astral-sh/uv:0.6.1,source=/uv,target=/bin/uv \ + --mount=type=cache,target=/opt/app-root/src/.cache/uv,uid=1001 \ + --mount=type=bind,source=uv.lock,target=uv.lock \ + --mount=type=bind,source=pyproject.toml,target=pyproject.toml \ + uv sync --frozen --no-install-project --no-dev --all-extras ${UV_SYNC_EXTRA_ARGS} RUN echo "Downloading models..." && \ docling-tools models download -o "${DOCLING_SERVE_ARTIFACTS_PATH}" ${MODELS_LIST} && \ @@ -54,8 +53,11 @@ RUN echo "Downloading models..." && \ chmod -R g=u /opt/app-root/src/.cache COPY --chown=1001:0 ./docling_serve ./docling_serve -RUN --mount=type=cache,target=/opt/app-root/src/.cache/uv,uid=1001 \ - uv sync --frozen --no-dev --all-extras ${UV_SYNC_EXTRA_ARGS} # --no-extra ${NO_EXTRA} +RUN --mount=from=ghcr.io/astral-sh/uv:0.6.1,source=/uv,target=/bin/uv \ + --mount=type=cache,target=/opt/app-root/src/.cache/uv,uid=1001 \ + --mount=type=bind,source=uv.lock,target=uv.lock \ + --mount=type=bind,source=pyproject.toml,target=pyproject.toml \ + uv sync --frozen --no-dev --all-extras ${UV_SYNC_EXTRA_ARGS} EXPOSE 5001