brf/Dockerfile
2025-11-24 17:09:09 +01:00

43 lines
915 B
Docker

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_books
WORKDIR /home/node/brf_books
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