From 0efe3066fccea58307df82aec58cc4380f9f81a7 Mon Sep 17 00:00:00 2001 From: Tom Misch Date: Mon, 11 May 2026 11:17:24 +0200 Subject: [PATCH] Reduce Docker image layer size --- .dockerignore | 1 + Dockerfile | 21 ++++++++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/.dockerignore b/.dockerignore index ad321ff..23c61aa 100644 --- a/.dockerignore +++ b/.dockerignore @@ -2,6 +2,7 @@ _site/ .git/ .claude/ node_modules/ +images/ .sass-cache/ .jekyll-metadata *.md diff --git a/Dockerfile b/Dockerfile index eb2f3df..950af6f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,15 +12,26 @@ COPY . . RUN bundle exec jekyll build -# === Serve-Phase: node.js backend + ImageMagick === -FROM node:20-alpine +# === Node-Dependencies: native sqlite3 mit Build-Tools bauen === +FROM node:20-alpine AS node-deps -# ImageMagick fuer Thumbnails, Docker CLI fuer Admin-Sync, Build-Tools fuer sqlite3 native bindings -RUN apk add --no-cache imagemagick docker-cli python3 make g++ build-base sqlite-dev +RUN apk add --no-cache python3 make g++ sqlite-dev WORKDIR /app COPY package*.json ./ -RUN npm install --omit=dev +RUN npm ci --omit=dev && npm cache clean --force + +# === Serve-Phase: node.js backend + Runtime-Tools === +FROM node:20-alpine + +# Getrennte RUNs halten einzelne Registry-Layer klein genug fuer Proxy-Limits. +RUN apk add --no-cache docker-cli +RUN apk add --no-cache imagemagick +RUN apk add --no-cache sqlite-libs + +WORKDIR /app +COPY package*.json ./ +COPY --from=node-deps /app/node_modules ./node_modules COPY backend ./backend COPY --from=builder /site/_site ./public