تخطَّ إلى المحتوى
ARAB CODEمجتمع المطورين العرب

سجل التعديلات

العودة إلى المقال

الفرق مقارنةً بالنسخة السابقة

+ **Docker** أداة لتغليف التطبيق مع كل ما يحتاجه (بيئة التشغيل، المكتبات، الإعدادات) في **صورة** (image) واحدة، ثم تشغيلها في **حاوية** (container) معزولة تعمل بالطريقة نفسها على أي جهاز.
+ ## الصورة والحاوية
+
+ - **الصورة**: قالب للقراءة فقط مبني من طبقات.
+ - **الحاوية**: نسخة قيد التشغيل من صورة، لها نظام ملفات قابل للكتابة يُحذف بحذفها.
+
+ ## Dockerfile
+
+ ```dockerfile
+ FROM node:22-alpine
+ WORKDIR /app
+ COPY package.json package-lock.json ./
+ RUN npm ci --omit=dev
+ COPY . .
+ USER node
+ EXPOSE 3000
+ CMD ["node", "server.js"]
+ ```
+
+ نسخ ملفات الحزم قبل بقية الكود يستفيد من **ذاكرة الطبقات**: لا يُعاد تثبيت الحزم إلا إذا تغيّرت.
+
+ ## أوامر أساسية
+
+ ```bash
+ docker build -t myapp:1.0 .
+ docker run -d --name web -p 3000:3000 myapp:1.0
+ docker logs -f web
+ docker ps
+ docker stop web
+ ```
+
+ ## حفظ البيانات
+
+ ```bash
+ docker volume create pgdata
+ docker run -d -v pgdata:/var/lib/postgresql/data postgres:16
+ ```
+
+ البيانات في **حجم** (volume) تبقى بعد حذف الحاوية.
+
+ ## Compose
+
+ ```yaml
+ # compose.yaml
+ services:
+ web:
+ build: .
+ ports: ["3000:3000"]
+ depends_on: [db]
+ db:
+ image: postgres:16
+ environment:
+ POSTGRES_PASSWORD_FILE: /run/secrets/db_password
+ volumes: [pgdata:/var/lib/postgresql/data]
+ volumes:
+ pgdata:
+ ```
+
+ `docker compose up -d` يشغّل الخدمات معاً على شبكة مشتركة.
+
+ ## أخطاء شائعة
+
+ - وضع الأسرار في `Dockerfile` (تبقى في طبقات الصورة).
+ - التشغيل بالمستخدم `root` داخل الحاوية دون حاجة.
+ - تخزين بيانات مهمة داخل الحاوية بلا حجم.
+ - نسيان ملف `.dockerignore` فيُنسخ `node_modules` و`.git` إلى الصورة.
  1. معتمدالنسخة الحاليةفريق عرب كودرسمي

    مقال مرجعي رسمي من فريق عرب كود

    ملاحظة المراجعة: Approved for publication: site owner written instruction 2026-10-24 (final completion directive: populate the wiki via the official editorial identity)