From 694c2fcae91156ef8ea6b57671d95aab59322992 Mon Sep 17 00:00:00 2001 From: Julien Calixte Date: Sat, 21 Mar 2026 11:06:58 +0100 Subject: [PATCH] chore: replace nixpacks with Dockerfile for faster cached builds --- .dockerignore | 6 ++++++ Dockerfile | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..2f3350a --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +node_modules +dist +.git +.gitignore +*.md +.env* diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..c2e1b4b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,35 @@ +# ---- Stage 1: deps (only invalidated when lockfile changes) ---- +FROM node:22-alpine AS deps + +RUN corepack enable && corepack prepare pnpm@latest --activate + +WORKDIR /app + +COPY package.json pnpm-lock.yaml ./ + +RUN pnpm install --frozen-lockfile + + +# ---- Stage 2: build (invalidated on any source change) ---- +FROM node:22-alpine AS builder + +RUN corepack enable && corepack prepare pnpm@latest --activate + +WORKDIR /app + +COPY --from=deps /app/node_modules ./node_modules + +COPY . . + +RUN pnpm run build + + +# ---- Stage 3: serve ---- +FROM nginx:alpine AS runner + +COPY --from=builder /app/dist /usr/share/nginx/html + +EXPOSE 80 + +HEALTHCHECK --interval=30s --timeout=3s \ + CMD wget -qO- http://localhost:80/ || exit 1