mirror of
https://github.com/gotenberg/gotenberg.git
synced 2026-08-08 00:22:14 +01:00
fix(Dockerfile): reposition COPY intructions to prevent cache invalidation
This commit is contained in:
@@ -147,10 +147,8 @@ RUN apt-get update -qq \
|
|||||||
# Cleanup.
|
# Cleanup.
|
||||||
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||||
|
|
||||||
# Copy PDFtk jar and create bash wrapper.
|
# PDFtk bash wrapper.
|
||||||
# See https://github.com/gotenberg/gotenberg/pull/273.
|
# See https://github.com/gotenberg/gotenberg/pull/273.
|
||||||
COPY --link --from=downloader-stage /downloads/pdftk-all.jar /usr/bin/pdftk-all.jar
|
|
||||||
|
|
||||||
RUN printf '#!/bin/bash\n\nexec java -jar /usr/bin/pdftk-all.jar "$@"' > /usr/bin/pdftk \
|
RUN printf '#!/bin/bash\n\nexec java -jar /usr/bin/pdftk-all.jar "$@"' > /usr/bin/pdftk \
|
||||||
&& chmod +x /usr/bin/pdftk
|
&& chmod +x /usr/bin/pdftk
|
||||||
|
|
||||||
@@ -162,12 +160,17 @@ RUN usermod -aG root gotenberg \
|
|||||||
&& chgrp -R 0 /home/gotenberg \
|
&& chgrp -R 0 /home/gotenberg \
|
||||||
&& chmod -R g=u /home/gotenberg
|
&& chmod -R g=u /home/gotenberg
|
||||||
|
|
||||||
|
# COPY instructions last to maximize cache reuse when only source code changes.
|
||||||
|
|
||||||
# Improve fonts subpixel hinting and smoothing.
|
# Improve fonts subpixel hinting and smoothing.
|
||||||
# Credits:
|
# Credits:
|
||||||
# https://github.com/arachnys/athenapdf/issues/69.
|
# https://github.com/arachnys/athenapdf/issues/69.
|
||||||
# https://github.com/arachnys/athenapdf/commit/ba25a8d80a25d08d58865519c4cd8756dc9a336d.
|
# https://github.com/arachnys/athenapdf/commit/ba25a8d80a25d08d58865519c4cd8756dc9a336d.
|
||||||
COPY --link build/fonts.conf /etc/fonts/conf.d/100-gotenberg.conf
|
COPY --link build/fonts.conf /etc/fonts/conf.d/100-gotenberg.conf
|
||||||
|
|
||||||
|
# Copy PDFtk jar.
|
||||||
|
COPY --link --from=downloader-stage /downloads/pdftk-all.jar /usr/bin/pdftk-all.jar
|
||||||
|
|
||||||
# Copy the pdfcpu binary (shared across all variants).
|
# Copy the pdfcpu binary (shared across all variants).
|
||||||
COPY --link --from=pdfcpu-binary-stage /home/pdfcpu /usr/bin/
|
COPY --link --from=pdfcpu-binary-stage /home/pdfcpu /usr/bin/
|
||||||
|
|
||||||
@@ -198,9 +201,6 @@ ARG GOTENBERG_VERSION=snapshot
|
|||||||
ARG GOTENBERG_USER_GID=1001
|
ARG GOTENBERG_USER_GID=1001
|
||||||
ARG GOTENBERG_USER_UID=1001
|
ARG GOTENBERG_USER_UID=1001
|
||||||
|
|
||||||
# Copy the Gotenberg binary (full variant with all modules).
|
|
||||||
COPY --link --from=gotenberg-binary-stage /home/gotenberg /usr/bin/
|
|
||||||
|
|
||||||
LABEL org.opencontainers.image.title="Gotenberg" \
|
LABEL org.opencontainers.image.title="Gotenberg" \
|
||||||
org.opencontainers.image.description="A Docker-based API for converting documents to PDF." \
|
org.opencontainers.image.description="A Docker-based API for converting documents to PDF." \
|
||||||
org.opencontainers.image.version="$GOTENBERG_VERSION" \
|
org.opencontainers.image.version="$GOTENBERG_VERSION" \
|
||||||
@@ -235,6 +235,11 @@ RUN echo "deb http://deb.debian.org/debian trixie-backports main" >> /etc/apt/so
|
|||||||
# Cleanup.
|
# Cleanup.
|
||||||
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||||
|
|
||||||
|
# COPY instructions last to maximize cache reuse.
|
||||||
|
|
||||||
|
# Copy the Gotenberg binary (full variant with all modules).
|
||||||
|
COPY --link --from=gotenberg-binary-stage /home/gotenberg /usr/bin/
|
||||||
|
|
||||||
# Copy unoconverter.
|
# Copy unoconverter.
|
||||||
COPY --link --from=downloader-stage /downloads/unoconverter /usr/bin/unoconverter
|
COPY --link --from=downloader-stage /downloads/unoconverter /usr/bin/unoconverter
|
||||||
|
|
||||||
@@ -265,9 +270,6 @@ ARG GOTENBERG_VERSION=snapshot
|
|||||||
ARG GOTENBERG_USER_GID=1001
|
ARG GOTENBERG_USER_GID=1001
|
||||||
ARG GOTENBERG_USER_UID=1001
|
ARG GOTENBERG_USER_UID=1001
|
||||||
|
|
||||||
# Copy the Gotenberg binary (Chromium variant — no LibreOffice modules).
|
|
||||||
COPY --link --from=gotenberg-binary-stage /home/gotenberg-chromium /usr/bin/gotenberg
|
|
||||||
|
|
||||||
LABEL org.opencontainers.image.title="Gotenberg (Chromium)" \
|
LABEL org.opencontainers.image.title="Gotenberg (Chromium)" \
|
||||||
org.opencontainers.image.description="A Docker-based API for converting documents to PDF — Chromium variant." \
|
org.opencontainers.image.description="A Docker-based API for converting documents to PDF — Chromium variant." \
|
||||||
org.opencontainers.image.version="$GOTENBERG_VERSION" \
|
org.opencontainers.image.version="$GOTENBERG_VERSION" \
|
||||||
@@ -282,6 +284,11 @@ RUN apt-get update -qq \
|
|||||||
# Cleanup.
|
# Cleanup.
|
||||||
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||||
|
|
||||||
|
# COPY instructions last to maximize cache reuse.
|
||||||
|
|
||||||
|
# Copy the Gotenberg binary (Chromium variant, no LibreOffice modules).
|
||||||
|
COPY --link --from=gotenberg-binary-stage /home/gotenberg-chromium /usr/bin/gotenberg
|
||||||
|
|
||||||
# Copy dictionnaries so that hyphens work on Chromium.
|
# Copy dictionnaries so that hyphens work on Chromium.
|
||||||
# See https://github.com/gotenberg/gotenberg/issues/1293.
|
# See https://github.com/gotenberg/gotenberg/issues/1293.
|
||||||
COPY --link --chown="$GOTENBERG_USER_UID:$GOTENBERG_USER_GID" build/chromium-hyphen-data /opt/gotenberg/chromium-hyphen-data
|
COPY --link --chown="$GOTENBERG_USER_UID:$GOTENBERG_USER_GID" build/chromium-hyphen-data /opt/gotenberg/chromium-hyphen-data
|
||||||
@@ -305,9 +312,6 @@ FROM common-stage AS gotenberg-libreoffice
|
|||||||
|
|
||||||
ARG GOTENBERG_VERSION=snapshot
|
ARG GOTENBERG_VERSION=snapshot
|
||||||
|
|
||||||
# Copy the Gotenberg binary (LibreOffice variant — no Chromium modules).
|
|
||||||
COPY --link --from=gotenberg-binary-stage /home/gotenberg-libreoffice /usr/bin/gotenberg
|
|
||||||
|
|
||||||
LABEL org.opencontainers.image.title="Gotenberg (LibreOffice)" \
|
LABEL org.opencontainers.image.title="Gotenberg (LibreOffice)" \
|
||||||
org.opencontainers.image.description="A Docker-based API for converting documents to PDF — LibreOffice variant." \
|
org.opencontainers.image.description="A Docker-based API for converting documents to PDF — LibreOffice variant." \
|
||||||
org.opencontainers.image.version="$GOTENBERG_VERSION" \
|
org.opencontainers.image.version="$GOTENBERG_VERSION" \
|
||||||
@@ -335,6 +339,11 @@ RUN echo "deb http://deb.debian.org/debian trixie-backports main" >> /etc/apt/so
|
|||||||
# Cleanup.
|
# Cleanup.
|
||||||
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||||
|
|
||||||
|
# COPY instructions last to maximize cache reuse.
|
||||||
|
|
||||||
|
# Copy the Gotenberg binary (LibreOffice variant, no Chromium modules).
|
||||||
|
COPY --link --from=gotenberg-binary-stage /home/gotenberg-libreoffice /usr/bin/gotenberg
|
||||||
|
|
||||||
# Copy unoconverter.
|
# Copy unoconverter.
|
||||||
COPY --link --from=downloader-stage /downloads/unoconverter /usr/bin/unoconverter
|
COPY --link --from=downloader-stage /downloads/unoconverter /usr/bin/unoconverter
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user