46 lines
1013 B
Docker
46 lines
1013 B
Docker
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
|