ARG NODE_IMAGE=node:20.20.2-alpine3.23@sha256:fb4cd12c85ee03686f6af5362a0b0d56d50c58a04632e6c0fb8363f609372293 FROM ${NODE_IMAGE} AS deps WORKDIR /app COPY package.json package-lock.json ./ COPY apps/api/package.json apps/api/package.json COPY packages/config/package.json packages/config/package.json COPY packages/db/package.json packages/db/package.json COPY packages/domain/package.json packages/domain/package.json COPY scripts/import-pocketbase/package.json scripts/import-pocketbase/package.json RUN npm ci --workspaces --include-workspace-root FROM deps AS production-deps RUN npm prune --omit=dev --workspaces --include-workspace-root \ && npm cache clean --force FROM ${NODE_IMAGE} AS build WORKDIR /app COPY --from=deps /app/node_modules ./node_modules COPY package.json package-lock.json ./ COPY apps/api ./apps/api COPY packages ./packages RUN npm run build:api FROM ${NODE_IMAGE} AS runner ENV NODE_ENV=production WORKDIR /app COPY --from=production-deps --chown=node:node /app/node_modules ./node_modules COPY --from=build --chown=node:node /app/apps/api/dist ./apps/api/dist EXPOSE 8787 USER node CMD ["node", "apps/api/dist/apps/api/src/server.js"]