لماذا يحتاج مشروع C# الخاص بك إلى Docker؟
\n\nتخيل الموقف التالي: لقد كتبت تطبيق C# رائع على حاسوبك المحمول الذي يعمل بنظام Windows 11، وقمت بتثبيت جميع المكتبات، وأعددت قاعدة البيانات، وهو يعمل بشكل مثالي. ولكن عندما تسلم المشروع لزميل يعمل على macOS أو ترفعه إلى خادم Linux، تبدأ المشاكل: "لدي إصدار مختلف من .NET"، "أين SQL Server؟"، "لديك مسار ثابت للملفات في الكود"... هل يبدو هذا مألوفًا؟
\n\nهنا يأتي دور حاويات تطبيقات C# باستخدام Docker. يتيح لك Docker حزم تطبيقك مع جميع التبعيات والإعدادات وحتى نظام التشغيل في حاوية خفيفة. وسيعمل بنفس الطريقة في كل مكان: على جهاز الكمبيوتر الشخصي الخاص بك، على خادم زميلك، في السحابة AWS أو Azure.
\n\nفي هذه المقالة، سنشرح كيفية حاوية تطبيقات C# باستخدام Docker من الألف إلى الياء. ستتعلم كيفية إنشاء Dockerfile لـ ASP.NET Core، وكيفية تحسين حجم الصورة، وكيفية تشغيل كل ذلك بأمر واحد. هيا بنا!
\n\nما هو Docker وما فائدته لمطور C#؟
\n\nDocker هي منصة لحاويات التطبيقات. الحاوية هي بيئة معزولة تحتوي على تطبيقك وكل ما يحتاجه لتشغيله: وقت التشغيل، المكتبات، متغيرات البيئة، الإعدادات. على عكس الآلات الافتراضية، تستخدم الحاويات نواة نظام التشغيل المشتركة، لذا فهي تعمل بشكل أسرع وتشغل مساحة أقل.
\n\nبالنسبة لمطور .NET، يوفر Docker العديد من الميزات القاتلة:
\n\n- \n
- القضاء على مشكلة "يعمل على جهازي" — تضمن الحاوية بيئة متطابقة \n
- تبسيط CI/CD — تقوم ببناء الصورة مرة واحدة واستخدامها في كل مكان \n
- هندسة الخدمات المصغرة — كل خدمة C# تعيش في حاويتها الخاصة \n
- قابلية التوسع — تشغيل 10 نسخ من API الخاص بك بسهولة في ثوانٍ \n
- العزل — تبعيات مشروع واحد لا تتعارض مع مشروع آخر \n
إذا كنت لا تستخدم حاويات تطبيقات .NET بعد، فقد حان الوقت للبدء. وسنفعل ذلك الآن.
\n\nالتحضير: ما تحتاج إلى تثبيته
\n\nقبل البدء في حاوية C#، تأكد من تثبيت ما يلي:
\n\n- \n
- Docker Desktop — قم بتنزيله من الموقع الرسمي. لنظام Windows، تأكد من تفعيل WSL 2 (ستظهر تلميحات أثناء التثبيت). \n
- .NET SDK 8.0 (أو 7.0/9.0 — ليس مهمًا) — قم بتنزيله من Microsoft. \n
- VS Code أو Visual Studio 2022 — للعمل المريح مع الكود. \n
تحقق من التثبيت باستخدام الأوامر في الطرفية:
\n\ndocker --version\ndotnet --version\n\nإذا أعاد كلا الأمرين رقم الإصدار — فكل شيء جاهز لتطوير Docker لـ .NET.
\n\nإنشاء تطبيق C# بسيط للحاوية
\n\nللتجربة، سنستخدم ASP.NET Core Web API بسيط. سننشئ المشروع في مجلد فارغ:
\n\ndotnet new webapi -n MyDockerApp\ncd MyDockerApp\n\nافتح ملف Program.cs وبسّطه إلى الشكل التالي (لتوضيح الفكرة):
var builder = WebApplication.CreateBuilder(args);\nvar app = builder.Build();\n\napp.MapGet("/", () => "Hello from Dockerized C# App!");\n\napp.Run();\n\nقم بتشغيله محليًا للتأكد من أن كل شيء يعمل:
\n\ndotnet run\n\nانتقل في المتصفح إلى http://localhost:5000 (أو المنفذ الذي يظهره الطرفية). هل ترى الترحيب؟ ممتاز. الآن سنحزم هذا التطبيق في Docker.
كتابة Dockerfile لتطبيق C#
\n\nDockerfile هو تعليمات لبناء الصورة. بالنسبة لـ <