43 lines
903 B
Docker
43 lines
903 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
|
|
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
|