6.1حالات عملية
الأساسي في 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é :
- اكتب ملف Dockerfile (node:20-slim وWORKDIR والاعتماديات أولاً وUSER node وCMD) مع .dockerignore (N2.1 وN2.5).
- ابنِ mon-app:1.0 واختبر محلياً مع -p 3000:3000 (N1.2 وN2.1).
- شدّد : .dockerignore وغير الجذر non-root والفحص Scan والوسم الثابت 1.0 (N2.5 وN4.1).
- ادفع نحو السجل Registry واجعل زميلاً يسحب ويشغّل (N2.3 وN4.1).
- تحقق : طرف ثالث يشغّل الصورة بأمر واحد، دون تثبيت Node 20.
النتيجة: صورة 1.0 مشتركة، تُشغَّل في كل مكان بأمر واحد، دون « ثبّت Node 20 ».
الحالة 2 — مكدس Compose لفريق صغير
السياق: يريد فريق تشغيل الواجهة + القاعدة + وحدة التحكم بأمر واحد، مع بيانات ثابتة وتحديثات بسيطة. التحدي : مكدس ينكسر عند أول إعادة تشغيل.
Déroulé :
- اكتب compose.yml : الواجهة (build) والقاعدة (المجلد pgdata) وadminer في الملف Profile dev (N3.1 وN3.4).
- اضبط المعاملات عبر ${PORT:-3000} و.env.example مُصدَر، و.env غير مُسلَّم (N3.4 وN2.4).
- أضف restart + الفحص الصحي Healthcheck للقاعدة + depends_on healthy (N4.2 وN3.2).
- تحقق عبر config ثم up -d --build، وأثبت down/up دون فقدان (N3.2 وN4.4).
- وثّق : توثيق « كيف تُشغَّل » يسع في سطر واحد (استنساخ + up).
النتيجة: مستودع مستنسخ + up = تطبيق كامل ؛ وتوثيق « كيف تُشغَّل » يسع في سطر واحد.
نص جاهز للقول — تأطير تسليم 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 » يجب أن يخاطب كل وافد جديد.
تحدي 48 ساعة — طبّق غداً
خذ تطبيقاً حقيقياً واحداً وأعد تنفيذ التسلسل : Dockerfile نظيف وبناء 1.0 وتشغيل محلي وcompose متحقق منه عبر config وإثبات down/up دون فقدان.
- أعرف تسلسل Dockerfile والبناء والمشاركة ومكدس Compose على حالة حقيقية.
- عندي تسلسل قابل لإعادة التنفيذ (صورة 1.0 وcompose مُصدَر وإثبات دون فقدان).
- نفذت تحدي 48 ساعة أو حددت تاريخه.
إدير يسلّم واجهته. أي تسلسل يحترم الدليل ؟