From 93945606eaaf2d24e2c7abfef7f051a79de80eab Mon Sep 17 00:00:00 2001 From: Justin Keller Date: Mon, 27 Oct 2025 07:12:53 -0500 Subject: [PATCH] feat(release): reduce image size by running autoremove, clean and removing lists (#6267) --- docker/builder-go.dockerfile | 5 ++++- docker/debian-base.dockerfile | 24 +++++++++++++++--------- docker/dockerfile | 11 ++++++++--- 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/docker/builder-go.dockerfile b/docker/builder-go.dockerfile index 3a9d78248..857476988 100644 --- a/docker/builder-go.dockerfile +++ b/docker/builder-go.dockerfile @@ -19,4 +19,7 @@ RUN apt update && \ curl -sL https://deb.nodesource.com/setup_18.x | bash && \ apt --yes --no-install-recommends install nodejs && \ node ./extra/build-healthcheck.js $TARGETPLATFORM && \ - apt --yes remove nodejs + apt --yes remove nodejs && \ + apt autoremove -y --purge && \ + apt clean && \ + rm -rf /var/lib/apt/lists/* diff --git a/docker/debian-base.dockerfile b/docker/debian-base.dockerfile index ca5fc43ec..14072ef5b 100644 --- a/docker/debian-base.dockerfile +++ b/docker/debian-base.dockerfile @@ -5,7 +5,10 @@ COPY ./extra/download-apprise.mjs ./download-apprise.mjs RUN apt update && \ apt --yes --no-install-recommends install curl && \ npm install cheerio semver && \ - node ./download-apprise.mjs + node ./download-apprise.mjs && \ + apt autoremove -y --purge && \ + apt clean && \ + rm -rf /var/lib/apt/lists/* # Base Image (Slim) # If the image changed, the second stage image should be changed too @@ -31,8 +34,9 @@ RUN apt update && \ curl \ sudo \ nscd && \ - rm -rf /var/lib/apt/lists/* && \ - apt --yes autoremove + apt autoremove -y --purge && \ + apt clean && \ + rm -rf /var/lib/apt/lists/* # apprise = for notifications (Install from the deb package, as the stable one is too old) (workaround for #4867) # Switching to testing repo is no longer working, as the testing repo is not bookworm anymore. @@ -41,9 +45,10 @@ RUN apt update && \ COPY --from=download-apprise /app/apprise.deb ./apprise.deb RUN apt update && \ apt --yes --no-install-recommends install ./apprise.deb python3-paho-mqtt && \ - rm -rf /var/lib/apt/lists/* && \ rm -f apprise.deb && \ - apt --yes autoremove + apt autoremove -y --purge && \ + apt clean && \ + rm -rf /var/lib/apt/lists/* # Install cloudflared RUN curl https://pkg.cloudflare.com/cloudflare-main.gpg --output /usr/share/keyrings/cloudflare-main.gpg && \ @@ -51,14 +56,14 @@ RUN curl https://pkg.cloudflare.com/cloudflare-main.gpg --output /usr/share/keyr apt update && \ apt install --yes --no-install-recommends cloudflared && \ cloudflared version && \ - rm -rf /var/lib/apt/lists/* && \ - apt --yes autoremove + apt autoremove -y --purge && \ + apt clean && \ + rm -rf /var/lib/apt/lists/* # For nscd COPY ./docker/etc/nscd.conf /etc/nscd.conf COPY ./docker/etc/sudoers /etc/sudoers - # Full Base Image # MariaDB, Chromium and fonts # Make sure to reuse the slim image here. Uncomment the above line if you want to build it from scratch. @@ -67,6 +72,7 @@ FROM louislam/uptime-kuma:base2-slim AS base2 ENV UPTIME_KUMA_ENABLE_EMBEDDED_MARIADB=1 RUN apt update && \ apt --yes --no-install-recommends install chromium fonts-indic fonts-noto fonts-noto-cjk mariadb-server && \ + apt autoremove -y --purge && \ + apt clean && \ rm -rf /var/lib/apt/lists/* && \ - apt --yes autoremove && \ chown -R node:node /var/lib/mysql diff --git a/docker/dockerfile b/docker/dockerfile index e2a301e7b..e19b8640e 100644 --- a/docker/dockerfile +++ b/docker/dockerfile @@ -70,7 +70,10 @@ RUN apt update \ && chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \ && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | tee /etc/apt/sources.list.d/github-cli.list > /dev/null \ && apt update \ - && apt --yes --no-install-recommends install git + && apt --yes --no-install-recommends install git \ + && apt autoremove -y --purge \ + && apt clean \ + && rm -rf /var/lib/apt/lists/* ## Empty the directory, because we have to clone the Git repo. RUN rm -rf ./* && chown node /app @@ -95,7 +98,10 @@ CMD ["npm", "run", "start-pr-test"] FROM louislam/uptime-kuma:base2 AS upload-artifact WORKDIR / RUN apt update && \ - apt --yes install curl file + apt --yes install curl file && \ + apt autoremove -y --purge && \ + apt clean && \ + rm -rf /var/lib/apt/lists/* COPY --from=build /app /app @@ -115,4 +121,3 @@ RUN chmod +x /app/extra/upload-github-release-asset.sh # Dist only RUN cd /app && tar -zcvf $DIST dist RUN /app/extra/upload-github-release-asset.sh github_api_token=$GITHUB_TOKEN owner=louislam repo=uptime-kuma tag=$VERSION filename=/app/$DIST -