# Tenant-container reference Dockerfile — seeded at bootstrap (#1593).
# Adapt package manager and build commands to the project; keep the image building from source.
FROM node:24-alpine AS deps
WORKDIR /app
COPY package.json package-lock.json ./
# npm workspaces: copy EVERY workspace package.json before `npm ci` so adding a workspace later
# does not break the image. Add one COPY line per workspace directory (apps/*, packages/*, …).
# COPY apps/my-app/package.json ./apps/my-app/
# Private GitHub Packages opt-in. Requires compose build.secrets and registry requiredBuildSecrets.
# RUN --mount=type=secret,id=NODE_AUTH_TOKEN \
#     npmrc="$(mktemp)"; trap 'rm -f "$npmrc"' EXIT; \
#     printf '//npm.pkg.github.com/:_authToken=%s\n' "$(cat /run/secrets/NODE_AUTH_TOKEN)" > "$npmrc"; \
#     NPM_CONFIG_USERCONFIG="$npmrc" npm ci
RUN npm ci

FROM node:24-alpine AS build
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN npm run build
RUN npm prune --omit=dev

FROM node:24-alpine AS runtime
WORKDIR /app
ENV NODE_ENV=production
COPY --from=build /app/package*.json ./
COPY --from=build /app/node_modules ./node_modules
COPY --from=build /app/dist ./dist
EXPOSE 3000
CMD ["node", "dist/index.js"]
