# ---- build stage: deps + compile + test ---- FROM node:22-slim AS build WORKDIR /app # Install build tools as a fallback for native modules without prebuilds RUN apt-get update \ && apt-get install -y --no-install-recommends python3 make g++ \ && rm -rf /var/lib/apt/lists/* COPY package.json package-lock.json ./ RUN npm ci COPY tsconfig.json vitest.config.ts ./ COPY server ./server RUN npm run build:server && npm test RUN npm prune --omit=dev # ---- runtime stage ---- FROM node:22-slim ENV NODE_ENV=production WORKDIR /app COPY package.json package-lock.json ./ COPY --from=build /app/node_modules ./node_modules COPY --from=build /app/server/dist ./server/dist ENV PORT=3000 ENV DATA_DIR=/data VOLUME /data EXPOSE 3000 CMD ["node", "server/dist/index.js"]