From ba0d039cdc9c96435a1d26315346ab3fbd23050f Mon Sep 17 00:00:00 2001 From: null Date: Tue, 12 May 2026 02:04:52 -0500 Subject: [PATCH] =?UTF-8?q?fix:=20reduce=20Docker=20image=20from=20331MB?= =?UTF-8?q?=20to=20215MB=20=E2=80=94=20remove=20duplicate=20node=5Fmodules?= =?UTF-8?q?=20layer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit v0.2.2: Removed COPY --from=builder node_modules from runner stage. The full dev+prod modules (116MB) were being copied as a permanent Docker layer, then npm ci --omit=dev installed a separate prod-only set on top. Now only the prod install runs, cutting 116MB. --- Dockerfile | 5 ++--- package.json | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 06045d0..b4b3ea7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -34,14 +34,13 @@ RUN mkdir -p /app/db /app/logs COPY docker-entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/docker-entrypoint.sh -# Copy from builder - production dependencies only +# Copy from builder - built artifacts and package manifests COPY --from=builder /app/package.json /app/package-lock.json* ./ -COPY --from=builder /app/node_modules ./node_modules COPY --from=builder /app/dist ./dist COPY --from=builder /app/server ./server # Install production dependencies only in runtime stage -RUN npm ci --omit=dev || true +RUN npm ci --omit=dev # Install su-exec for switching to non-root user RUN apk add --no-cache su-exec && \ diff --git a/package.json b/package.json index b108b8e..6e65048 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "queuenorth-website", "private": true, - "version": "0.2.1", + "version": "0.2.2", "type": "module", "scripts": { "dev": "concurrently \"vite\" \"node server/index.js\"",