# syntax=docker/dockerfile:1 FROM node:22-alpine AS base RUN npm install -g corepack@latest \ && corepack enable \ && corepack prepare pnpm@9.13.0 --activate FROM base AS deps WORKDIR /app COPY package.json pnpm-lock.yaml ./ RUN --mount=type=cache,id=pnpm,target=/pnpm/store \ pnpm config set store-dir /pnpm/store \ && pnpm install --frozen-lockfile FROM base AS builder WORKDIR /app COPY --from=deps /app/node_modules ./node_modules COPY package.json pnpm-lock.yaml tsconfig.json tsconfig.build.json ./ COPY src ./src RUN pnpm run build && pnpm prune --prod FROM node:22-alpine AS runner RUN apk add --no-cache tzdata \ && cp /usr/share/zoneinfo/Asia/Tehran /etc/localtime \ && echo "Asia/Tehran" > /etc/timezone \ && addgroup -S appgroup \ && adduser -S appuser -G appgroup WORKDIR /app ENV NODE_ENV=production \ TZ=Asia/Tehran COPY --from=builder --chown=appuser:appgroup /app/node_modules ./node_modules COPY --from=builder --chown=appuser:appgroup /app/dist ./dist COPY --chown=appuser:appgroup package.json ./ USER appuser EXPOSE 4000 CMD ["node", "--trace-warnings", "dist/server.js"]