FROM node:lts as base FROM node:20-slim AS base ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" RUN corepack enable WORKDIR /base COPY package.json pnpm-lock.yaml ./ RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile COPY . . FROM base AS dev ENV NODE_ENV=development EXPOSE 3001 CMD ["pnpm","dev"] FROM base AS build ENV NODE_ENV=production WORKDIR /build COPY --from=base /base . RUN pnpm build FROM build as prod ENV NODE_ENV=production WORKDIR /prod COPY package*.json . RUN pnpm install --production COPY --from=build /build/tsconfig.json ./tsconfig.json COPY --from=build /build/dist ./dist COPY --from=build /build/build ./build EXPOSE 3000 COPY docker-entrypoint.sh /docker-entrypoint.sh ENTRYPOINT ["/docker-entrypoint.sh"] CMD ["pnpm", "serve"]