# Pre-requisite: run ./scripts/docker-prep.sh to pack @bytelyst/* tarballs # ── Stage 1: Build ──────────────────────────────────── FROM node:22-slim AS builder WORKDIR /app/backend ENV NODE_TLS_REJECT_UNAUTHORIZED=0 RUN npm config set strict-ssl false COPY backend/package.json ./package.json COPY backend/.docker-deps/ ./.docker-deps/ RUN npm install COPY backend/tsconfig.json ./tsconfig.json COPY backend/src/ ./src/ COPY shared/ ../shared/ RUN npm run build # ── Stage 2: Prod deps ─────────────────────────────── FROM node:22-slim AS deps WORKDIR /app/backend ENV NODE_TLS_REJECT_UNAUTHORIZED=0 RUN npm config set strict-ssl false COPY backend/package.json ./package.json COPY backend/.docker-deps/ ./.docker-deps/ RUN npm install --omit=dev # ── Stage 3: Runtime ────────────────────────────────── FROM node:22-slim WORKDIR /app/backend ENV NODE_ENV=production COPY --from=deps /app/backend/node_modules ./node_modules COPY --from=deps /app/backend/package.json ./package.json COPY --from=builder /app/backend/dist ./dist COPY shared/product.json ../shared/product.json EXPOSE 4011 CMD ["node", "dist/server.js"]