From 8d1cd49339b6fb3ffe53f1cf751c1ee565dd4461 Mon Sep 17 00:00:00 2001 From: Stan Runge Date: Sat, 7 Mar 2026 17:31:08 +0100 Subject: [PATCH] faster docker builds --- .dockerignore | 4 ++++ Dockerfile | 25 ++++++++++--------------- 2 files changed, 14 insertions(+), 15 deletions(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..dd3746f --- /dev/null +++ b/.dockerignore @@ -0,0 +1,4 @@ +node_modules +.svelte-kit +.git +build diff --git a/Dockerfile b/Dockerfile index 18111ec..149c27b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,28 +1,23 @@ FROM oven/bun AS base WORKDIR /app -# Install dependencies -FROM base AS install -RUN mkdir -p /temp/dev -COPY package.json bun.lock /temp/dev/ -RUN cd /temp/dev && bun install --frozen-lockfile +# Install dependencies (cached unless package.json/bun.lock change) +FROM base AS deps +COPY package.json bun.lock ./ +RUN bun install --frozen-lockfile -RUN mkdir -p /temp/prod -COPY package.json bun.lock /temp/prod/ -RUN cd /temp/prod && bun install --frozen-lockfile --production - -# Build +# Build (mount cache so SvelteKit reuses previous build artifacts) FROM base AS build -COPY --from=install /temp/dev/node_modules node_modules +COPY --from=deps /app/node_modules node_modules COPY . . ENV NODE_ENV=production -RUN bun run build +RUN --mount=type=cache,target=/app/.svelte-kit bun run build -# Runtime +# Runtime — prod deps only FROM base AS runtime -COPY --from=install /temp/prod/node_modules node_modules +COPY package.json bun.lock ./ +RUN bun install --frozen-lockfile --production COPY --from=build /app/build build -COPY --from=build /app/package.json . USER bun ENV NODE_ENV=production