Dockerfile خوب هم سرعت ساخت را بالا میبرد و هم سطح حمله را کم میکند.
# مرحلهٔ ساخت
FROM node:20 AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# مرحلهٔ اجرا
FROM node:20-slim
WORKDIR /app
COPY --from=build /app/dist ./dist
USER node
CMD ["node", "dist/server.js"]- Multi-stage: ابزارهای ساخت در ایمیج نهایی نمیمانند.
- ترتیب لایهها: فایلهایی که کمتر عوض میشوند (مثل package.json) را زودتر کپی کنید تا کش بماند.
- .dockerignore: node_modules و فایلهای لازمنشده را کنار بگذارید.
- کاربر غیرroot: برنامه را با
USERاجرا کنید. - نسخهٔ ایمیج پایه را ثابت و سبک انتخاب کنید.




