FROM node:25-alpine AS base ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" ARG UID=1000 ARG GID=1000 RUN apk add --no-cache shadow RUN npm install -g pnpm@^10.23.0 RUN groupmod -g $GID node # this does not seem to be having full effect. eg /home/node gets 1337:1000 ownership despite group node having id 1337 RUN usermod -u $UID -g node node USER node RUN mkdir /home/node/brf WORKDIR /home/node/brf COPY --chown=node pnpm-lock.yaml package.json . RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile COPY --chown=node vite.config.js . # -------- development -------- # FROM base AS development ENV NODE_ENV=development CMD pnpm run start:watch # -------- production --------- # FROM base AS production COPY --chown=node client client COPY --chown=node server server ENV NODE_ENV=production RUN pnpm run build COPY --chown=node .git .git CMD pnpm run start