Docker وC#: حاويات التطبيقات من الألف إلى الياء

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

Docker وC#: دليل شامل لحاويات تطبيقات .NET



أصبحت الحاويات المعيار الفعلي لنشر التطبيقات الحديثة. إذا كنت تطور باستخدام C# (.NET)، فإن Docker يسمح لك بتغليف تطبيقك مع جميع تبعياته في حاوية خفيفة ومعزولة. في هذه المقالة، سننتقل من إنشاء Dockerfile بسيط إلى نشر وتشغيل صورة جاهزة. ستتعلم كيفية حاوية تطبيق C#، وتحسين حجم الصورة، واستخدام أفضل الممارسات.



1. أساسيات Docker لمطور .NET



Docker هي منصة لتطوير وتسليم وتشغيل التطبيقات في حاويات. الحاوية هي وحدة برمجية موحدة تتضمن الكود وجميع تبعياته. على عكس الآلات الافتراضية، تستخدم الحاويات نواة نظام تشغيل مشتركة، مما يجعلها أسرع وأخف وزناً.



بالنسبة لـ C# (.NET)، فإن Docker مفيد بشكل خاص لأنه يحل مشكلة "يعمل لدي" - أنت تضمن أن التطبيق سيتصرف بنفس الطريقة على جهاز المطور، وخادم الاختبار، وفي الإنتاج. المكونات الرئيسية:



  • Docker Engine — بيئة تشغيل الحاويات
  • Dockerfile — ملف نصي يحتوي على تعليمات بناء الصورة
  • الصورة (Image) — قالب غير قابل للتغيير لإنشاء الحاويات
  • الحاوية (Container) — مثيل قيد التشغيل من الصورة


قم بتثبيت Docker Desktop لنظامي Windows/Mac أو Docker Engine لنظام Linux. بعد التثبيت، تحقق من العمل باستخدام الأمر:



docker --version


2. إنشاء Dockerfile لتطبيق C# (.NET)



لنبدأ بتطبيق ASP.NET Core Web API بسيط. قم بإنشاء مشروع جديد:



dotnet new webapi -n MyDockerAppcd MyDockerApp


الآن قم بإنشاء ملف Dockerfile (بدون امتداد) في جذر المشروع. إليك الإصدار الأساسي مع البناء متعدد المراحل (multi-stage build):



# المرحلة 1: بناء التطبيقFROM mcr.microsoft.com/dotnet/sdk:8.0 AS buildWORKDIR /src

# نسخ ملف csproj واستعادة التبعياتCOPY ["MyDockerApp.csproj", "."]RUN dotnet restore

# نسخ باقي الكود وبناء المشروعCOPY . .RUN dotnet publish -c Release -o /app/publish

# المرحلة 2: إنشاء صورة مصغرة للتشغيلFROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtimeWORKDIR /appEXPOSE 80EXPOSE 443

# نسخ التطبيق المبني من المرحلة الأولىCOPY --from=build /app/publish .

# نقطة الدخولENTRYPOINT ["dotnet", "MyDockerApp.dll"]


شرح التعليمات الرئيسية:

  • FROM — يحدد الصورة الأساسية (SDK للبناء، ASP.NET للتشغيل)
  • WORKDIR — يحدد دليل العمل
  • COPY — ينسخ الملفات من سياق البناء إلى الصورة
  • RUN dotnet restore — يستعيد حزم NuGet
  • RUN dotnet publish — يترجم وينشر التطبيق
  • EXPOSE — يحدد المنافذ التي ستستمع إليها الحاوية
  • ENTRYPOINT — الأمر الذي يتم تنفيذه عند تشغيل الحاوية


البناء متعدد المراحل أمر بالغ الأهمية لـ C#: الصورة النهائية تحتوي فقط على بيئة التشغيل وتطبيقك، بدون SDK والملفات المصدرية. هذا يقلل حجم الصورة من ~1.5 جيجابايت إلى ~200 ميجابايت.



3. بناء وتشغيل الحاوية



قم ببناء صورة Docker:



docker build -t my-dotnet-app:latest .


العلامة -t تحدد الوسم (الاسم:الإصدار). النقطة في النهاية تعني الدليل الحالي كسياق للبناء.



قم بتشغيل الحاوية:



docker run -d -p 8080:80 --name my-app my-dotnet-app:latest


المعلمات:

  • -d — تشغيل في الخلفية (منفصل)
  • -p 8080:80 — توجيه المنفذ: منفذ المضيف 8080

المدونات

توصيات الكتب