diff --git a/.docker/Dockerfile b/.docker/Dockerfile index 80285762..2fff268e 100644 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -36,7 +36,6 @@ RUN \ && cd .. \ && rm -rf jbig2 -COPY . /app WORKDIR /app @@ -45,7 +44,19 @@ COPY --from=ghcr.io/astral-sh/uv:0.5.5 /uv /uvx /bin/ ENV UV_COMPILE_BYTECODE=1 UV_LINK_MODE=copy -RUN uv sync --extra test --extra webservice --extra watcher --no-dev +# Install the project's dependencies using the lockfile and settings +RUN --mount=type=cache,target=/root/.cache/uv \ + --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 + +# Then, add the rest of the project source code and install it +# Installing separately from its dependencies allows optimal layer caching +COPY . /app +RUN --mount=type=cache,target=/root/.cache/uv \ + uv sync --frozen \ + --extra test --extra webservice --extra watcher --no-dev \ + --no-install-package pyarrow FROM base @@ -65,6 +76,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ tesseract-ocr-fra \ tesseract-ocr-por \ tesseract-ocr-spa \ + ttyd \ unpaper \ && rm -rf /var/lib/apt/lists/* diff --git a/.docker/Dockerfile.alpine b/.docker/Dockerfile.alpine index 9d7c04f8..be47ab1f 100644 --- a/.docker/Dockerfile.alpine +++ b/.docker/Dockerfile.alpine @@ -27,15 +27,27 @@ RUN apk add --no-cache \ py3-pyarrow \ curl -COPY . /app - WORKDIR /app COPY --from=ghcr.io/astral-sh/uv:0.5.5 /uv /uvx /bin/ ENV UV_COMPILE_BYTECODE=1 UV_LINK_MODE=copy -RUN uv sync --extra test --extra webservice --extra watcher --no-dev +RUN uv venv --system-site-packages .venv + +# Install the project's dependencies using the lockfile and settings +RUN --mount=type=cache,target=/root/.cache/uv \ + --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 + +# Then, add the rest of the project source code and install it +# Installing separately from its dependencies allows optimal layer caching +COPY . /app +RUN --mount=type=cache,target=/root/.cache/uv \ + uv sync --frozen \ + --extra test --extra webservice --extra watcher --no-dev \ + --no-install-package pyarrow FROM base @@ -53,6 +65,7 @@ RUN apk add --no-cache \ tesseract-ocr-data-por \ tesseract-ocr-data-spa \ ttf-droid \ + ttyd \ unpaper \ && rm -rf /var/cache/apk/*