البناء على الصور الأساس
إلى جانب قواعد البيانات والتطبيقات، تحمل QuenchWorks مجموعة من الصور الأساس التي تبني عليها تطبيقاتك الخاصة: بيئات تشغيل لغوية مُحصّنة، وصور أساس تشغيل نحيلة للمرحلة الأخيرة، وصور أدوات بناء. وهي النوع نفسه من الأدوات كأي شيء آخر في الكتالوج. خالية من الثغرات (0-CVE)، موقّعة بـ cosign، مبنية بدون صلاحيات الجذر على نظام ملفات جذر للقراءة فقط، متعددة المعماريات، مع قائمة مكوّنات (SBOM) ومنشأ SLSA مرفقين. ما عليك إلا أن تستخدمها بـ FROM في ملف Dockerfile بدلًا من سحبها كخادم.
ثلاث عائلات
المفسّرات وحُزم التطوير (SDK) التي تبني بها: Python و Node و Go و Rust و .NET و الـ JDK و Ruby و PHP و Bun و Deno و Erlang و Elixir و Perl. تحمل كل واحدة أحدث خطوطها المستقرة، دون :latest.
المرحلة النحيلة الأخيرة التي تنسخ إليها تطبيقًا مبنيًّا: static للملفات الثنائية المكتفية ذاتيًا، وjre لملفات jar، وdotnet-runtime / aspnet لـ .NET.
أسس لغوية مع أداة حزم أو بناء مثبّتة مسبقًا: pnpm و Yarn و Composer و Maven و Gradle و uv و Poetry.
الكتالوج الكامل، مع وسوم الإصدارات والترخيص والبصمة لكل صورة.
فكرة البناء المتعدد المراحل
النمط الذي يمنحك صورة إنتاج صغيرة ونظيفة هو نفسه في كل مكان: ابنِ في مرحلة، وشغّل في أخرى.
- مرحلة البناء. ابدأ FROM صورة الـ SDK أو أداة البناء (
nodeوgoوmavenوهكذا). ثبّت كل اعتمادية، بما فيها اعتماديات التطوير والبناء، وأنتِج أداتك: ملفًا ثنائيًا مُجمَّعًا، أوdist/مبنيًّا، أو ملف jar، أو مجلّدًا منشورًا. - مرحلة التشغيل. ابدأ FROM أساس نحيل (
staticوjreوpythonوdotnet-runtime). انسخ المخرجات المبنية واعتماديات الإنتاج فقط. اترك المُجمِّع واعتماديات التطوير وذاكرات الحزم خلفك في مرحلة البناء.
تشحن النتيجة ما يعمل في الإنتاج فقط. تبقى سلسلة الأدوات خارج الصورة التي تنشرها، وهذا يعني صورة أصغر وسطح هجوم أصغر.
قاعدتا التحصين
هذه الصور ليست أسس Debian-slim المعتادة، فهناك عادتان من ملفات Dockerfile العادية ستعثّرانك. ولكلٍّ منهما حلّ نظيف.
أدلّة لكل منظومة
يتصدّر كل دليل بملف Dockerfile كامل متعدد المراحل قابل للنسخ يعكس أصلًا واقع البناء بلا غلاف وبدون صلاحيات الجذر.
بناء متعدد المراحل مع مرحلة اعتماديات إنتاج؛ ومتغيّرات pnpm و npm و Yarn.
ابنِ venv في مرحلة، وشغّله على أساس python النحيل؛ pip و uv و Poetry.
البناء الكلاسيكي ذو المرحلتين على static لصورة نهائية صغيرة.
ابنِ ملف jar بـ Maven أو Gradle، وشغّله على jre.
dotnet publish على الـ SDK، والتشغيل على aspnet أو dotnet-runtime.