قم بإنشاء ملفات Dockerfile جاهزة للإنتاج لـ Node.js و Python و Go و Java و Nginx مع عمليات بناء متعددة المراحل وترتيب طبقات مُحسَّن.
# Build stage FROM node:20-alpine AS builder WORKDIR /app # Copy dependency manifests first to leverage Docker layer cache COPY package*.json ./ RUN npm ci COPY . . RUN npm run build # Production stage FROM node:20-alpine WORKDIR /app RUN addgroup -S appgroup && adduser -S appuser -G appgroup USER appuser COPY --from=builder /app/dist ./dist COPY --from=builder /app/node_modules ./node_modules ENV NODE_ENV=production EXPOSE 3000 CMD ["node", "dist/index.js"]
.git .gitignore *.md .env .env.* .DS_Store Thumbs.db node_modules npm-debug.log* .npm dist build coverage .nyc_output .eslintcache
ملف Dockerfile هو ملف نصي يحدد كيفية إنشاء صورة حاوية. ترتيب التعليمات مهم لكفاءة التخزين المؤقت: يتم تثبيت التبعيات قبل نسخ شفرة المصدر، بحيث يعيد Docker استخدام الطبقة المخزنة مؤقتًا عند تغيير شفرة التطبيق فقط، وليس عند تغيير التبعيات.
اختر لغةً وصورةً أساسية، ويمكنك تفعيل أو تعطيل عمليات البناء متعددة المراحل، وحدد أوامر البناء والتشغيل، وأضف أي متغيرات بيئية. يفرض المُولِّد ترتيب الطبقات وفقًا لأفضل الممارسات، ويُنشئ مستخدمًا غير جذري افتراضيًا لأغراض الأمان.
تُنتج عمليات البناء متعددة المراحل صورة نهائية أصغر حجمًا بفصل بيئة البناء عن بيئة التشغيل. تقوم مرحلة البناء بتجميع التطبيق، ويتم نسخ الناتج المُجمّع فقط إلى مرحلة التشغيل المُصغّرة. يُعدّ هذا فعالًا بشكل خاص لتطبيقات Go وJava.