6.1 · حالات عملية

المستوى 6 · في الممارسة

6.1حالات عملية

الهدف: رؤية كيف تتسلسل مهارات المستويات 0 إلى 5 على حالات حقيقية.
الوقت المقدّر: 14 دقيقة · إذا كان لديك 5 دقائق فقط: اقرأ «الأساسي في 30 ثانية» + المخطط.

الأساسي في 30 ثانية

  • ركّب : ملف Dockerfile نظيف (slim، والاعتماديات أولاً، وغير الجذر non-root)، وصورة موسومة 1.0، ومكدس Compose معلن، وثبات مثبت، وCI مصنعاً وحيداً.
  • أثبت : اختبر محلياً، واجعل طرفاً ثالثاً يسحب ويشغّل، وأثبت down/up دون فقدان — ما لم يُثبت لا وجود له.
  • شارك : صورة مُصدَرة ومستودع مستنسخ + up = تطبيق كامل، دون « ثبّت Node 20 ».

خيط إدير — تسليمان في الجزائر

إدير، مهندس DevOps مبتدئ في الجزائر، يراجع ورشتيه الأبرز في الثلاثي : تحويل واجهة Node التي لم تكن تعمل إلا على حاسوب مؤلفها إلى حاويات (Dockerfile، وبناء 1.0، وتشديد، ودفع نحو السجل Registry، واستعادة من زميل)، ثم تجهيز فريقه الصغير بمكدس Compose يضم الواجهة + القاعدة + وحدة التحكم (معاملات، وإعادة تشغيل وفحص صحي Healthcheck، وتحقق، وإثبات دون فقدان). الحالتان أدناه تستعيدان تسلسله : اكتب نظيفاً، وابنِ، وشدّد، وشارك، وصرّح، وأثبت.

كل حالة تتبع المسار السياق ← الخطوات ← النتيجة : أعد تنفيذها على تطبيقك.

تركيب اللبنات معاً

وضعت المستويات السابقة اللبنات (الصور Images، والحاويات Containers، والمجلدات Volumes، والشبكات Networks، وDockerfile، وCompose، والسجلات Registries، وCI) ؛ هنا نركبها في ظروف حقيقية : تسلسل المنعكسات الجيدة — صورة مشددة، ومكدس معلن، وثبات مثبت، وCI وحيدة — هو ما يميز النشر الموثوق عن التكديس الهش. حالتان مفصلتان من الألف إلى الياء.

الحالة 1 — تحويل واجهة إلى حاويات من الألف إلى الياء

السياق: نستلم واجهة Node لا تعمل إلا على حاسوب مؤلفها ويجب تسليمها كصورة مشتركة. الخطر : بيئة غير قابلة لإعادة الإنتاج و« تعمل عندي ».

Déroulé :

  1. اكتب ملف Dockerfile ‏(node:20-slim وWORKDIR والاعتماديات أولاً وUSER node وCMD) مع .dockerignore ‏(N2.1 وN2.5).
  2. ابنِ mon-app:1.0 واختبر محلياً مع -p 3000:3000 ‏(N1.2 وN2.1).
  3. شدّد : .dockerignore وغير الجذر non-root والفحص Scan والوسم الثابت 1.0 ‏(N2.5 وN4.1).
  4. ادفع نحو السجل Registry واجعل زميلاً يسحب ويشغّل ‏(N2.3 وN4.1).
  5. تحقق : طرف ثالث يشغّل الصورة بأمر واحد، دون تثبيت Node 20.

النتيجة: صورة 1.0 مشتركة، تُشغَّل في كل مكان بأمر واحد، دون « ثبّت Node 20 ».

الحالة 2 — مكدس Compose لفريق صغير

السياق: يريد فريق تشغيل الواجهة + القاعدة + وحدة التحكم بأمر واحد، مع بيانات ثابتة وتحديثات بسيطة. التحدي : مكدس ينكسر عند أول إعادة تشغيل.

Déroulé :

  1. اكتب compose.yml : الواجهة (build) والقاعدة (المجلد pgdata) وadminer في الملف Profile dev ‏(N3.1 وN3.4).
  2. اضبط المعاملات عبر ${PORT:-3000} و.env.example مُصدَر، و.env غير مُسلَّم ‏(N3.4 وN2.4).
  3. أضف restart + الفحص الصحي Healthcheck للقاعدة + depends_on healthy ‏(N4.2 وN3.2).
  4. تحقق عبر config ثم up -d --build، وأثبت down/up دون فقدان ‏(N3.2 وN4.4).
  5. وثّق : توثيق « كيف تُشغَّل » يسع في سطر واحد (استنساخ + up).

النتيجة: مستودع مستنسخ + up = تطبيق كامل ؛ وتوثيق « كيف تُشغَّل » يسع في سطر واحد.

خطأ شائع في الفهم: « نسخ الحالات حرفياً ». خطأ. الحالات تُظهر ترتيب إنتاج (اكتب نظيفاً، وابنِ، وشدّد، وشارك، وصرّح، وأثبت)، لا وصفة للنسخ : استعد الترتيب، وكيّف الصورة والخدمات والمعاملات مع تطبيقك.
نص المخطط (SEO / قارئات الشاشة / الترجمة): السلسلة الكاملة : 1) اكتب (Dockerfile بنسخة slim والاعتماديات أولاً وUSER node و.dockerignore ‏(N2.1/N2.5)). 2) ابنِ واختبر (وسم ثابت 1.0 وتشغيل -p محلياً ‏(N1.2)). 3) شدّد (non-root والفحص Scan والوسم 1.0 وأبداً latest في الإنتاج ‏(N2.5/N4.1)). 4) شارك (الدفع نحو السجل والسحب + التشغيل من طرف ثالث ‏(N2.3/N4.1)). 5) صرّح (compose.yml للواجهة + القاعدة + ملف dev و${PORT:-3000} و.env.example ‏(N3.1/N3.4)). 6) وثّق الموثوقية وأثبت (restart والفحص الصحي وdepends_on healthy وconfig وup -d --build وdown/up دون فقدان ‏(N4.2/N4.4)). الدرس : النشر الموثوق يأتي من التسلسل، لا من أمر واحد.

نص جاهز للقول — تأطير تسليم Docker ‏(30 ثانية)

« حاجتنا : [واجهة للمشاركة / مكدس الواجهة + القاعدة]. صورتنا : [slim وغير الجذر والوسم 1.0 ومفحوصة]. مكدسنا : [compose مُصدَر و${PORT:-3000} والمجلد pgdata]. إثباتنا : [سحب من طرف ثالث / down-up دون فقدان]. »

نموذج نسخ ولصق — تسلسل الحالة العملية

docker build -t mon-app:1.0 .
docker run -d --name api -p 3000:3000 mon-app:1.0
docker compose config
docker compose up -d --build
docker compose ps
docker compose down
docker compose up -d

شركة صغيرة جداً / ميزانية صغيرة

حالة واحدة معادة التنفيذ مصغرة : صورة 1.0 وcompose بخدمتين وإثبات down/up مدون.

شركة صغيرة ومتوسطة في الجزائر

التكييف مع الواقع المحلي : الاختبار على الجهاز الحقيقي للفريق، وتوقع المجلد pgdata محفوظاً.

عن بعد / هجين

مضاعفة التتبع عن بعد : الوسم والسجل وإثبات down/up مدونة ومشتركة.

بين الثقافات

توضيح التوثيق قبل نقل حالة : سطر « استنساخ + up » يجب أن يخاطب كل وافد جديد.

حذر: تذكير عام : الصورة المشتركة تُلزم فريقك — أوسمة ثابتة وغير الجذر non-root والفحص، وصفر أسرار في الصورة ومستودع git، و.env غير مُسلَّم، وإثبات down/up قبل اعتبار التسليم منجزاً.

تحدي 48 ساعة — طبّق غداً

خذ تطبيقاً حقيقياً واحداً وأعد تنفيذ التسلسل : Dockerfile نظيف وبناء 1.0 وتشغيل محلي وcompose متحقق منه عبر config وإثبات down/up دون فقدان.

قائمة الخروج من القسم
  • أعرف تسلسل Dockerfile والبناء والمشاركة ومكدس Compose على حالة حقيقية.
  • عندي تسلسل قابل لإعادة التنفيذ (صورة 1.0 وcompose مُصدَر وإثبات دون فقدان).
  • نفذت تحدي 48 ساعة أو حددت تاريخه.
تقييم ذاتي 1-5 : هل يستعيد طرف ثالث صورتي بأمر واحد ؟هل ثباتي مثبت بـ down/up ؟
تحقّق من فهمك

إدير يسلّم واجهته. أي تسلسل يحترم الدليل ؟