FROM node:23-alpine AS base ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" RUN corepack enable pnpm ARG UID=1000 ARG GID=1000 RUN apk add --no-cache git shadow 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/startbit RUN git config --global --add safe.directory /home/node/startbit WORKDIR /home/node/startbit COPY --chown=node pnpm-lock.yaml package.json ./ RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile COPY --chown=node \ .env.secrets \ 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 server/index.ts