From bf5b995d7c1e3bfb1805755cf4278cfe745906bd Mon Sep 17 00:00:00 2001 From: Daniel Date: Wed, 11 Mar 2026 11:50:34 +0100 Subject: [PATCH] CI: Enable BuildKit cache mounts for faster npm installs - Add syntax directive for BuildKit cache-mount support - Cache /root/.npm between builds (web + server npm install) - Enable DOCKER_BUILDKIT=1 in CI build step - Remove aggressive builder prune that killed layer cache after each build Co-Authored-By: Claude Opus 4.6 --- .forgejo/workflows/build-deploy.yml | 4 +--- Dockerfile | 6 ++++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.forgejo/workflows/build-deploy.yml b/.forgejo/workflows/build-deploy.yml index 0fcf4c5..d8de99d 100644 --- a/.forgejo/workflows/build-deploy.yml +++ b/.forgejo/workflows/build-deploy.yml @@ -47,7 +47,7 @@ jobs: - name: Build Docker image run: | - docker build \ + DOCKER_BUILDKIT=1 docker build \ --build-arg "VITE_BUILD_CHANNEL=${{ steps.vars.outputs.channel }}" \ --build-arg "VITE_APP_VERSION=${{ steps.vars.outputs.version }}" \ -t ${{ env.REGISTRY }}/${{ env.IMAGE }}:${{ steps.vars.outputs.tag }} \ @@ -75,7 +75,6 @@ jobs: docker rmi "${{ env.REGISTRY }}/${{ env.IMAGE }}:latest" 2>/dev/null || true fi docker image prune -f 2>/dev/null || true - docker builder prune -f --keep-storage=4GB 2>/dev/null || true deploy: runs-on: ubuntu-latest @@ -125,7 +124,6 @@ jobs: if: always() run: | docker image prune -f 2>/dev/null || true - docker builder prune -f --keep-storage=4GB 2>/dev/null || true bump-version: runs-on: ubuntu-latest diff --git a/Dockerfile b/Dockerfile index 453a5f5..2844aa3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,9 @@ +# syntax=docker/dockerfile:1 + FROM node:24-slim AS web-build WORKDIR /app/web COPY web/package*.json ./ -RUN npm install --no-audit --no-fund +RUN --mount=type=cache,target=/root/.npm npm install --no-audit --no-fund COPY web/ . ARG VITE_BUILD_CHANNEL=stable ARG VITE_APP_VERSION=dev @@ -13,7 +15,7 @@ FROM node:24-slim AS server-deps WORKDIR /app/server RUN apt-get update && apt-get install -y python3 make g++ && rm -rf /var/lib/apt/lists/* COPY server/package*.json ./ -RUN npm install --no-audit --no-fund +RUN --mount=type=cache,target=/root/.npm npm install --no-audit --no-fund FROM server-deps AS server-build COPY server/ .