From e80007cc28ca144f5b69ed3396390e58ef1e21e0 Mon Sep 17 00:00:00 2001 From: morteza-mortezai Date: Tue, 23 Jun 2026 22:38:30 +0330 Subject: [PATCH] update docker file --- Dockerfile | 56 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/Dockerfile b/Dockerfile index ccc2c41..d1074c1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,40 +1,42 @@ -# Stage 1: Build Stage +# syntax=docker/dockerfile:1 + FROM node:22-alpine AS base - -RUN npm install -g corepack@latest -RUN corepack enable && corepack prepare pnpm@latest --activate - -# Install tzdata to support timezone settings -RUN apk add --no-cache tzdata - -# Set the timezone to Asia/Tehran -RUN cp /usr/share/zoneinfo/Asia/Tehran /etc/localtime && echo "Asia/Tehran" > /etc/timezone - +RUN npm install -g corepack@latest \ + && corepack enable \ + && corepack prepare pnpm@9.13.0 --activate FROM base AS deps -WORKDIR /temp-deps -COPY package*.json pnpm-lock.yaml ./ -RUN pnpm install --frozen-lockfile --loglevel info - +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 /build -COPY . ./ -COPY --from=deps /temp-deps/node_modules ./node_modules -RUN if [ -f package.json ] && grep -q '"build":' package.json; then pnpm run build; fi -RUN pnpm install --prod --frozen-lockfile --loglevel info +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 -FROM base AS runner -RUN addgroup -S appgroup && adduser -S appuser -G appgroup WORKDIR /app -COPY --from=builder --chown=appuser:appgroup /build/ ./ +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 -ENV NODE_ENV=production EXPOSE 4000 -CMD ["npm", "start"] - - +CMD ["node", "--trace-warnings", "dist/server.js"]