المشروع الختامي: تغليف تطبيق حقيقي في Docker
حان وقت جمع كل شيء معًا. نأخذ تطبيق web صغيرًا، ونكتب له Dockerfile، ونشغّله بمنفذ ومتغير بيئة، ونربط به قاعدة بيانات باستخدام Docker Compose — وهو بالضبط سير العمل الذي ستكرره مرارًا وتكرارًا في العمل الحقيقي. كل قرار هنا يبني على ما تعلمته بالفعل: cache والمنافذ وvolumes والأسرار وأسماء الخدمات.
الأمر أشبه بطهي وجبة كاملة بعد إتقان كل وصفة على حدة: الآن تجمع المكونات — التطبيق وقاعدة البيانات والشبكة — في طبق واحد يعمل.
- compose.yaml
- ملف واحد يصف كل خدمات التطبيق (web، db)، والشبكة بينها، وvolumes. أمر واحد، `docker compose up`، يشغّلها جميعًا معًا.
- اسم الخدمة
- داخل Compose، تصل خدمة إلى أخرى عبر اسمها (مثل db)، ويترجمه الـDNS الداخلي إلى العنوان الصحيح. لا تستخدم localhost بين الخدمات.
- named volume
- تخزين تُديره Docker ومرتبط بـdb، بحيث تبقى البيانات حتى عند حذف الحاوية وإعادة إنشائها. بدونه، يفقد كل restart قاعدة البيانات.