FROM node:20 RUN mkdir /zeppelin RUN corepack enable RUN chown node:node /zeppelin USER node ARG API_URL # Install dependencies before copying over any other files RUN corepack prepare --activate pnpm@latest COPY --chown=node:node package.json pnpm-lock.yaml pnpm-workspace.yaml /zeppelin RUN mkdir /zeppelin/backend COPY --chown=node:node backend/package.json /zeppelin/backend RUN mkdir /zeppelin/shared COPY --chown=node:node shared/package.json /zeppelin/shared RUN mkdir /zeppelin/dashboard COPY --chown=node:node dashboard/package.json /zeppelin/dashboard WORKDIR /zeppelin RUN pnpm i COPY --chown=node:node . /zeppelin # Build backend WORKDIR /zeppelin/backend RUN pnpm run build # Build dashboard WORKDIR /zeppelin/dashboard RUN pnpm run build # Prune dev dependencies WORKDIR /zeppelin RUN pnpm prune --prod