FROM node:20-alpine

RUN npm install -g pnpm

WORKDIR /app

COPY --chown=node:node ./package.json ./pnpm-lock.yaml /app/
COPY --chown=node:node ./client/package.json ./client/pnpm-lock.yaml /client/

WORKDIR /client
RUN NODE_ENV=development pnpm install

COPY --chown=node:node ./server /app
COPY --chown=node:node ./client /client

RUN pnpm run build

RUN cp -r /client/dist /app/dist

WORKDIR /app
RUN pnpm install --production --frozen-lockfile

RUN chown -R node:node /app

ENV NODE_ENV=production

USER node
EXPOSE 5287

CMD ["node", "server/index.js"]