حاويات ⁦JVM⁩

يأتي ⁦Elide⁩ مع أداة حاويات مدمجة.

يتم الكشف عنها بطريقتين.

  1. الاستخدام كبديل مباشر — يمرر ⁦elide jib -- [OPTION...]⁩ الوسائط مباشرة إلى أداة ⁦jib⁩ المدمجة.
  2. التكامل مع نظام البناء — ينشئ ⁦elide build⁩ الحاويات تلقائياً بناءً على التصريحات في ⁦elide.pkl⁩.

الاستخدام كبديل مباشر

يتم استدعاء الاستخدام كبديل مباشر عبر ⁦elide jib --⁩ ويعمل بشكل مطابق لأمر ⁦jib⁩ العادي.

تستخدم استدعاءات ⁦elide jib⁩ التنسيق التالي:

shell
 elide jib -- < jib options> <source files>

يفصل ⁦--⁩ بين خيارات ⁦Elide⁩ وخيارات ⁦jib⁩ المحددة.

ملاحظة

لا توجد خيارات خاصة بـ ⁦Elide⁩ قبل ⁦--⁩ في الوقت الحالي. لا يزال فاصل ⁦--⁩ مطلوباً.

يدعم ⁦Elide Jib⁩ ثلاثة أوامر فرعية لحاوية أنواع مختلفة من القطع الأثرية.
الأمرالوصف
build بناء حاوية.
jar حاوية لملف ⁦jar⁩.
war حاوية لملف ⁦war⁩.
لمزيد من المعلومات حول ⁦Jib⁩، انظر هنا.

أمر ⁦Build⁩

ينشئ أمر ⁦build⁩ صورة حاوية من ملف بناء ⁦Jib⁩ بتنسيق ⁦YAML⁩.

shell
 elide jib -- build -t < target-image> -b < build-file> [options]
العلَمالوصف
-t، —target=IMAGEمرجع صورة الوجهة أو عنوان ⁦URL⁩ بأسلوب ⁦Jib⁩ (مطلوب).
-b، —build-file=PATHمسار ملف البناء (الافتراضي: ⁦jib.yaml⁩).
-c، —context=DIRمجلد جذر سياق البناء.
—name=IMAGEمرجع الصورة لإدخاله في تكوين ⁦tar⁩ (مطلوب عند استخدام ⁦tar://⁩).
-p، —parameter=NAME=VALUEمعامل قالب لإدخاله في ملف البناء (قابل للتكرار).
—additional-tags=TAG[,TAG...]علامات إضافية للصورة الهدف.
—base-image-cache=DIRمسار ذاكرة التخزين المؤقت للصورة الأساسية.
—project-cache=DIRمسار ذاكرة التخزين المؤقت للمشروع.
—image-metadata-out=PATHمسار ملف ⁦JSON⁩ لبيانات الصورة الوصفية بعد البناء.
—verbosity=LEVELتعيين مستوى التفصيل في السجل: ⁦quiet⁩، ⁦error⁩، ⁦warn⁩، ⁦lifecycle⁩، ⁦info⁩، ⁦debug⁩ (الافتراضي: ⁦lifecycle⁩).
—console=TYPEتعيين نوع إخراج وحدة التحكم: ⁦auto⁩، ⁦rich⁩، ⁦plain⁩ (الافتراضي: ⁦auto⁩).
—allow-insecure-registriesالسماح بالاتصال بالسجلات عبر ⁦HTTP⁩.
—send-credentials-over-httpالسماح بإرسال بيانات الاعتماد عبر ⁦HTTP⁩.

تنسيقات الهدف

يقبل علَم ⁦--target⁩ عدة مخططات لعناوين ⁦URL⁩.
التنسيقالوصف
registry://IMAGEالدفع إلى سجل حاويات
docker://IMAGEالتحميل إلى خدمة ⁦Docker⁩ المحلية
tar://PATHالكتابة إلى أرشيف ⁦tar⁩ (يتطلب ⁦—name⁩)
gcr.io/project/imageالدفع مباشرة إلى سجل بالمرجع

خيارات المصادقة

يمكن توفير بيانات الاعتماد بعدة طرق.
العلَمالوصف
—credential-helper=HELPERمساعد بيانات الاعتماد لكلا السجلَّين
—username=USERاسم المستخدم لكلا السجلَّين
—password=PASSكلمة المرور لكلا السجلَّين
—from-credential-helper=HELPERمساعد بيانات الاعتماد لسجل الصورة الأساسية
—from-username=USERاسم المستخدم لسجل الصورة الأساسية
—from-password=PASSكلمة المرور لسجل الصورة الأساسية
—to-credential-helper=HELPERمساعد بيانات الاعتماد لسجل الهدف
—to-username=USERاسم المستخدم لسجل الهدف
—to-password=PASSكلمة المرور لسجل الهدف

تنسيق ملف البناء

يستخدم ⁦Jib⁩ ملف بناء بتنسيق ⁦YAML⁩ لتعريف صورة الحاوية. لمعرفة المزيد حول ⁦jib.yaml⁩، راجع صفحة ⁦jib-cli⁩ على ⁦GitHub⁩.

مثال على استخدام أمر ⁦Build⁩

بالنظر إلى مشروع يحتوي على ملف بناء ⁦jib.yaml⁩، يمكنك بناء حاوية وتحميلها إلى ⁦Docker⁩.

shell
 elide jib -- build -t docker://my-app:latest -b jib.yaml

للبناء والكتابة إلى أرشيف ⁦tar⁩ بدلاً من ذلك:

shell
 elide jib -- build -t tar://my-app.tar --name my-app:latest -b jib.yaml

للدفع إلى سجل بعيد:

shell
 elide jib -- build -t registry://gcr.io/my-project/my-app:latest -b jib.yaml

أمر ⁦Jar⁩

يقوم أمر ⁦jar⁩ بحاوية ملف ⁦JAR⁩ موجود مباشرة، بدون ملف بناء.

shell
 elide jib -- jar -t < target-image> [options] < jar-file>

مثال على استخدام أمر ⁦Jar⁩

لحاوية ملف ⁦JAR⁩ وتحميله إلى ⁦Docker⁩:

shell
 elide jib -- jar -t docker://my-app:latest --from eclipse-temurin:25-jre app.jar

التكامل مع نظام البناء

عند استخدام ⁦elide build⁩ مع ملف مشروع ⁦elide.pkl⁩، يمكن التصريح ببناءات صور الحاويات كقطع أثرية وبناؤها تلقائياً.

التصريح بصور الحاويات

يتم التصريح بصور الحاويات في كتلة ⁦artifacts⁩ من ملف ⁦elide.pkl⁩ باستخدام نوع ⁦ContainerImage⁩ من ⁦elide:Container.pkl⁩. تتطلب الحاوية مصدراً صالحاً وحزمة ⁦JVM⁩ مُصرَّح بها.

pkl
amends "elide:project.pkl"
import "elide:Sources.pkl" as Sources
import "elide:Container.pkl" as Container
import "elide:Jvm.pkl" as Jvm

sources {
   ["main"] = new Sources.SourceSetSpec {
      paths {
        "./src/HelloWorld.java"
     }
   }
}

jvm {
   main = "dev.main"
}

artifacts {
   ["main-jvm"] = new Jvm.Jar {
     sources {
      "main"
     }
    }
   ["container"] = new Container.ContainerImage {
      from {
      "main-jvm"
      }
      output = "daemon"
  }
}

خصائص صورة الحاوية

الخاصيةالنوعالافتراضيالوصف
fromListing<String>{}أسماء القطع الأثرية التي يتم بناء صورة الحاوية منها
imageString?إحداثيات الصورة الهدف
baseString?الصورة الأساسية المستخدمة للحاوية
tagsListing<String>{}العلامات المراد تطبيقها على صورة الحاوية
outputContainerOutputMode"daemon"وضع الإخراج: ⁦daemon⁩ أو ⁦registry⁩ أو ⁦tarball
formatContainerFormat"docker"تنسيق الصورة: ⁦docker⁩ أو ⁦oci

أوضاع الإخراج

تتحكم خاصية ⁦output⁩ في مكان نشر صورة الحاوية المبنية.
الوضعالوصف
daemonالنشر إلى خدمة ⁦Docker⁩ المحلية
registryالدفع مباشرة إلى السجل المحدد في إحداثيات الصورة
tarballالكتابة إلى ملف ⁦tarball⁩ محلي يمكن استيراده يدوياً إلى ⁦Docker⁩

تنسيقات الصور

التنسيقالوصف
dockerصورة ⁦Docker⁩
ociتنسيق صور مبادرة الحاويات المفتوحة (⁦OCI⁩)

مثال على استخدام نظام البناء

بالنظر إلى ملف ⁦elide.pkl⁩ التالي:

pkl
amends "elide:project.pkl"
import "elide:Sources.pkl" as Sources
import "elide:Jvm.pkl" as Jvm
import "elide:Container.pkl" as Container

sources {
  ["main"] = new Sources.SourceSetSpec {
    paths {
      "src/main/java<<>>*.java"
    }
  }
}

artifacts {
  ["app-jar"] = new Jvm.Jar {
    from { "main" }
  }

  ["app-image"] = new Container.ContainerImage {
    from { "app-jar" }
    image = "my-app"
    base = "eclipse-temurin:25-jre"
    tags { "latest" }
    output = "daemon"
  }
}

سيقوم تشغيل ⁦elide build⁩ بترجمة المصادر وتحزيم ملف ⁦JAR⁩ وبناء صورة الحاوية تلقائياً.