0Pricing
Scala for Backend Engineering & Functional Programming · درس

إنشاء الحاويات باستخدام Docker

تعلّم وضع تطبيقات Scala الخاصة بكم في حاويات باستخدام Docker لتوفير بيئات متسقة وتبسيط النشر

إنشاء الحاويات باستخدام Docker درس مجاني في Scala for Backend Engineering & Functional Programming على CoddyKit. هذا هو الدرس 2 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Scala for Backend Engineering & Functional Programming، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Scala for Backend Engineering & Functional Programming 3 دروس في المجموع.

لماذا نستخدم الحاويات لتطبيقات Scala؟

عند نشر تطبيقات Scala، قد يكون ضمان اتساق البيئة بين مراحل التطوير والاختبار والإنتاج أمرًا صعبًا. وهنا يأتي دور الحاويات!

تغلّف الحاوية تطبيقكم وجميع تبعياته (مثل آلة Java الافتراضية والمكتبات والإعدادات) في وحدة واحدة معزولة. ويضمن ذلك تشغيله بالطريقة نفسها في كل مكان.

Docker: الصور والحاويات

يُعد Docker المنصة الأكثر شيوعًا لاستخدام الحاويات. وهو يعتمد على مفهومين أساسيين:

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

أول عملية تشغيل لـ Docker

لنجرّب تشغيل حاوية Docker بسيطة جدًا. يسحب هذا الأمر صورة hello-world (إذا لم تكن موجودة مسبقًا) ويشغّلها كحاوية.

ستظهر رسالة تؤكد أن Docker يعمل بشكل صحيح!

docker run hello-world

تطبيق Scala البسيط

قبل إنشاء الحاوية، لننشئ تطبيق Scala مصغرًا. سيطبع هذا البرنامج رسالة إلى وحدة التحكم فحسب.

سنحزّم هذا التطبيق في صورة Docker قريبًا!

object Main extends App {
  val message = "Hello from CoddyKit's Docker container!"
  println(message)
}

المخطط: Dockerfile

إن Dockerfile ملف نصي يحتوي على جميع الأوامر التي يمكن للمستخدم استدعاؤها من سطر الأوامر لإنشاء صورة. وهو يشبه وصفة لبناء صورة Docker الخاصة بكم.

تشمل التعليمات الأساسية ما يلي:

  • FROM: يحدد الصورة الأساسية.
  • WORKDIR: يحدد دليل العمل.
  • COPY: ينسخ الملفات إلى الصورة.
  • RUN: ينفّذ الأوامر أثناء إنشاء الصورة.
  • CMD: يحدد الأمر الذي سيُشغّل عند بدء الحاوية.

Dockerfile: مرحلة البناء لـ Scala

بالنسبة إلى Scala، نستخدم غالبًا بناءً متعدد المراحل. تنشئ المرحلة الأولى تطبيقنا. ونستخدم صورة OpenJDK تحتوي على JDK كامل لترجمة كود Scala الخاص بنا.

# Stage 1: Build the Scala application
FROM adoptopenjdk/openjdk11:latest as builder
WORKDIR /app
COPY Main.scala .
RUN scalac Main.scala
RUN jar -cvf app.jar Main.class

Dockerfile: مرحلة التشغيل لـ Scala

تنشئ المرحلة الثانية صورة أصغر بكثير، لا تحتوي إلا على JRE (بيئة تشغيل Java) وتطبيق Scala المترجم الخاص بنا (ملف JAR). وهذا يحافظ على صغر حجم الصورة النهائية.

# Stage 2: Create a minimal runtime image
FROM adoptopenjdk/openjdk11:jre-hotspot
WORKDIR /app
COPY --from=builder /app/app.jar .
CMD ["java", "-jar", "app.jar"]

Dockerfile الكامل لـ Scala

إليكم Dockerfile الكامل متعدد المراحل لتطبيق Scala الخاص بنا. يجب تسمية هذا الملف Dockerfile ووضعه في الدليل نفسه الذي يحتوي على Main.scala.

# Stage 1: Build the Scala application
FROM adoptopenjdk/openjdk11:latest as builder
WORKDIR /app
COPY Main.scala .
RUN scalac Main.scala
RUN jar -cvf app.jar Main.class

# Stage 2: Create a minimal runtime image
FROM adoptopenjdk/openjdk11:jre-hotspot
WORKDIR /app
COPY --from=builder /app/app.jar .
CMD ["java", "-jar", "app.jar"]

إنشاء صورة Docker

بعد أن أصبح لدينا Dockerfile وMain.scala، لننشئ صورة Docker. تضع الوسيطة -t وسمًا على صورتنا باسم (مثل scala-hello)، بينما تشير . إلى أن الدليل الحالي هو سياق البناء.

docker build -t scala-hello .

تشغيل تطبيق Scala داخل حاوية

بعد إنشاء الصورة، يمكنكم تشغيل تطبيق Scala داخل حاوية Docker باستخدام الأمر docker run. وسيؤدي ذلك إلى تنفيذ التعليمة CMD المحددة في Dockerfile الخاص بكم.

docker run scala-hello

من المفترض أن تظهر في وحدة التحكم لديكم الرسالة "Hello from CoddyKit's Docker container!"!

اختبروا معارفكم

اختبروا مدى فهمكم لملفات Dockerfile.

مراجعة: وضع Scala في حاوية

لقد تعلمتم بنجاح أساسيات وضع تطبيق Scala في حاوية باستخدام Docker!

  • صور Docker هي مخططات، أما الحاويات فهي نسخ قابلة للتشغيل.
  • إن Dockerfile وصفة لإنشاء صورتكم.
  • يساعد البناء متعدد المراحل على إنشاء صور صغيرة وفعالة لتطبيقات Scala.
  • تدير أوامر مثل docker build وdocker run الصور والحاويات الخاصة بكم.

تُعد هذه المعرفة أساسية لنشر الخدمات المصغرة المكتوبة بلغة Scala بطريقة متسقة وموثوقة.

الأسئلة الشائعة

هل درس «إنشاء الحاويات باستخدام Docker» مجاني؟

نعم — نص درس «إنشاء الحاويات باستخدام Docker» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Scala for Backend Engineering & Functional Programming، انتقل إلى CoddyKit PRO. تتضمن دورة Scala for Backend Engineering & Functional Programming 3 دروس في المجموع.

ماذا ستتعلم في «إنشاء الحاويات باستخدام Docker»؟

تعلّم وضع تطبيقات Scala الخاصة بكم في حاويات باستخدام Docker لتوفير بيئات متسقة وتبسيط النشر تتمرن على Scala for Backend Engineering & Functional Programming مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Scala for Backend Engineering & Functional Programming؟

لا تُشترط خبرة سابقة. Scala for Backend Engineering & Functional Programming على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 3.

كم من الوقت يستغرق درس «إنشاء الحاويات باستخدام Docker»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Scala for Backend Engineering & Functional Programming هذا؟

نعم. كل درس في Scala for Backend Engineering & Functional Programming يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. تصميم الخدمات المصغّرة باستخدام Scala
  2. إنشاء الحاويات باستخدام Docker
  3. استراتيجيات النشر السحابي
← العودة إلى Scala for Backend Engineering & Functional Programming