# Stage 1: install vite and build static site FROM node:lts-bookworm-slim AS build-site RUN npm install -g npm@11.5 RUN mkdir /code RUN chown node:node /code WORKDIR /code USER node COPY package.json package.json RUN npm install COPY public /code/public COPY src /code/src COPY vite.config.js /code/ RUN npm run build # stage 2: build image to serve static files FROM caddy:2-alpine ARG SITE_UID=1000 ARG SITE_GID=1000 ARG SITE_USER=caddy ARG SITE_GROUP=sites RUN addgroup --system $SITE_GROUP --gid $SITE_GID \ && adduser --system --uid $SITE_UID --ingroup $SITE_GROUP $SITE_USER COPY Caddyfile /etc/caddy/Caddyfile COPY --chown=$SITE_USER:$SITE_GROUP --from=build-site /code/dist /usr/share/caddy USER $SITE_USER