# syntax=docker/dockerfile:1 FROM node:22-alpine AS base ENV TZ=Asia/Tehran FROM base AS deps WORKDIR /app COPY package.json package-lock.json ./ RUN --mount=type=cache,target=/root/.npm \ npm ci --ignore-scripts --no-fund --no-audit FROM base AS builder WORKDIR /app COPY --from=deps /app/node_modules ./node_modules COPY . . ARG VITE_API_BASE_URL ARG VITE_TOKEN_NAME ARG VITE_REFRESH_TOKEN_NAME ENV VITE_API_BASE_URL=$VITE_API_BASE_URL \ VITE_TOKEN_NAME=$VITE_TOKEN_NAME \ VITE_REFRESH_TOKEN_NAME=$VITE_REFRESH_TOKEN_NAME \ NODE_ENV=production RUN npm run build FROM nginx:stable-alpine AS production ENV TZ=Asia/Tehran COPY --from=builder /app/dist /usr/share/nginx/html COPY nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 80 HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ CMD wget -q --spider http://127.0.0.1/health || exit 1 CMD ["nginx", "-g", "daemon off;"]