Loading…

حول منسق Dockerfile مجاني عبر الإنترنت

Dockerfile فوضوي؟ مسافات بادئة مكسورة، تباعد غير متسق وسلاسل RUN غير قابلة للقراءة؟ يستخدم منسق Dockerfile هذا محركًا قائمًا على dprint (عبر خلفية آمنة) لتوحيد Dockerfiles و Containerfiles الخاصة بك بتخطيط نظيف ومدروس. يحافظ على تعليماتك في مكانها تمامًا مع جعل الملف أسهل للمراجعة والإصدار والأتمتة عبر البيئات.

الميزات الرئيسية لمنسق Dockerfile

  • ينظف المسافات البادئة والتباعد والتفاف الأسطر لـ Dockerfiles و Containerfiles
  • يوحد تعليمات RUN متعددة الأسطر بشرطات مائلة خلفية ومسافات بادئة متسقة
  • يحترم دلالات Dockerfile – لا إعادة ترتيب للتعليمات، لا تغييرات في منطق shell
  • مخرجات حتمية: نفس الإدخال والإصدار ⇒ نفس Dockerfile المنسق
  • رفيق مثالي لخطافات pre-commit والمستودعات الأحادية ومهام CI باستخدام dprint
  • محرر قائم على الويب مع تمييز بناء الجملة، مخرجات صديقة للفروق وإجراءات النسخ والتنزيل
  • يعمل جيدًا مع البناء متعدد المراحل ووسيطات البناء وصور Node/.NET/Go النموذجية

🛠️ كيفية تنسيق Dockerfile for dockerfile-formatter

1

1. الصق أو ارفع Dockerfile الخاص بك

الصق Dockerfile الخاص بك في المحرر أو أسقط Dockerfile/Containerfile من مشروعك. القصاصات الصغيرة (مثل كتلة FROM/RUN مفردة) تعمل أيضًا إذا كنت تريد فقط التجربة.

2

2. تشغيل المُنسِّق

انقر على "تنسيق". يرسل الأداة مصدرك إلى خلفية آمنة تعتمد على dprint تقوم بضبط المسافات البادئة والفراغات والتعليمات ذات النمط المصفوفي وسلاسل RUN متعددة الأسطر دون المساس بالمنطق التنفيذي.

3

3. مراجعة، نسخ أو تنزيل

قارن المخرجات المنسقة مع ملفك الأصلي. عندما تكون راضيًا، انسخ النتيجة مرة أخرى إلى مستودعك أو حمِّل Dockerfile المنسق لتنفيذه مباشرة.

التفاصيل التقنية

أنواع الملفات المدعومة

يستهدف المُنسِّق تعليمات بناء Docker وملفات بناء الحاويات المتوافقة المستخدمة عبر Docker وPodman وأدوات مشابهة.

النوعمثالملاحظات
DockerfileDockerfile، Dockerfile.prod، Dockerfile.node18ملفات بناء Docker الكلاسيكية للصور
ContainerfileContainerfileملفات تكوين نمط Podman / Buildah
قصاصات مضمنةFROM node:18-alpineيتم دعم القطع الصغيرة أو الأمثلة أيضًا للاختبارات السريعة

سلوك التنسيق (نمط dprint)

السلوكيات عالية المستوى لملحق dprint الأساسي المستخدم بواسطة هذه الأداة:

المجالالسلوكمثال
المسافات البادئةيوحد المسافات البادئة للأسطر المستمرة في RUN والتعليمات الأخرىRUN set -eux; \\n npm ci; \\n npm cache clean --force
القوائم والمصفوفاتينظف الفراغات في المصفوفات ذات النمط JSON لـ CMD/ENTRYPOINT/HEALTHCHECKCMD ["npm", "start"] → CMD ["npm", "start"] (ولكن بمسافات متناسقة)
الفراغاتيزيل المسافات الزائدة حول التعليمات مع الحفاظ على المعنىENV NODE_ENV=production
التفاف الأسطرقد يعيد تدفق سلاسل RUN الطويلة لسهولة القراءة دون تغيير الترتيبتصبح خطوط الأنابيب الطويلة للشل أسهل في المسح والمراجعة في الاختلافات
تعليقاتيحافظ على التعليقات الكاملة والتعليقات المضمنة بجانب التعليمات# base image for build stage\nFROM node:18 AS build

أهداف غير مقصودة

هذا المُنسِّق مقصود به التخطيط فقط، لذا يمكنك دمجه مع أدوات DevOps الأخرى:

العنصرمعالج؟ملاحظات
فحص النمط Hadolintاستخدم hadolint أو أدوات مشابهة للتحقق من أفضل الممارسات والتحذيرات
فحص الأمانلا يوجد فحص CVE أو ثغرات للصور أو السجلات
بناء الصورلا ينفذ docker build ولا يتفاعل مع محرك Docker
إعادة ترتيب التعليماتلا يعيد ترتيب التعليمات أبداً؛ فقط المسافات البادئة والبيضاء تتغير
تعزيز الصورة الأساسيةلا يوصي بصور أساسية؛ فهو يُنسِّق أي شيء تقدمه

واجهة سطر الأوامر ومكافئات CI

هل أعجبك النتيجة؟ كرر نفس السلوك محلياً وفي CI باستخدام dprint والأدوات التكميلية.

عالمي (dprint)

تهيئة dprint وإضافة إضافة Dockerfile

dprint init
# In dprint.json, add:
# {
#   "plugins": ["https://plugins.dprint.dev/dockerfile-0.x.wasm"]
# }
# Then format your Dockerfiles:
dprint fmt Dockerfile

أقرب تطابق لهذا المُنسِّق عبر الإنترنت، لذا يستخدم المطورون وCI نفس النمط.

Linux/macOS

فحص مع hadolint (يكمل التنسيق)

hadolint Dockerfile

اجمع بين التنسيق (النمط) والفحص (أفضل الممارسات، صور أصغر، فحوصات الصحة).

Git / pre-commit

تشغيل dprint على ملفات Dockerfile المتغيرة قبل الالتزام

# .pre-commit-config.yaml (conceptual)
- repo: local
  hooks:
    - id: dprint-dockerfile
      name: dprint Dockerfiles
      entry: dprint fmt
      language: system
      files: "(Dockerfile|Containerfile)$"

يضمن أن كل ملف Dockerfile مدمج في main يكون مُنسَّقاً مسبقاً.

حالات الاستخدام الشائعة

هندسة التطوير والمنصة

  • توحيد ملفات Docker عبر الخدمات المصغرة قبل مراجعة الكود
  • تنظيف ملفات Docker القديمة الموروثة من فرق أو قوالب متعددة
  • توحيد النمط عند ترحيل الصور أو إصدارات نظام التشغيل الأساسي أو استراتيجيات البناء
# ملف Docker متعدد المراحل نموذجي (نظيف، سهل المراجعة)
FROM node:18 AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci && npm cache clean --force
COPY . .
RUN npm run build

FROM node:18-alpine
WORKDIR /app
COPY --from=build /app/dist ./
CMD ["node", "index.js"]

خطوط أنابيب CI/CD

  • فشل عمليات البناء عندما لا تكون ملفات Docker منسقة بشكل صحيح
  • إصلاح النمط تلقائياً على فروع الميزات عبر خطافات pre-commit أو مهام CI
  • الحفاظ على تكوين Docker مقروءاً في المستودعات طويلة الأمد ومستودعات المنصة
# مثال على خطاف Git pre-commit (كود زائف)
#!/bin/sh
changed=$(git diff --cached --name-only --diff-filter=ACM | grep -E 'Dockerfile|Containerfile' || true)
[ -z "$changed" ] && exit 0
dprint fmt $changed
git add $changed

انضمام الفريق والاتساق

  • إعطاء أعضاء الفريق الجدد نمط Dockerfile واحداً وموحداً ليتبعوه
  • إزالة النقاشات حول نمط الكود من طلبات السحب: دع المُنسِّق يكون مصدر الحقيقة
  • محاذاة التنسيق المحلي وخطافات المستودع ومهام CI حول تكوين dprint نفسه
# مقتطف مثال لـ docs/onboarding.md
1. تثبيت dprint محلياً
2. نسخ dprint.json المشترك من مستودع المنصة
3. تشغيل `dprint fmt Dockerfile` قبل فتح طلب سحب

❓ Frequently Asked Questions

هل يغير التنسيق طريقة بناء الصورة الخاصة بي؟

لا. المُنسِّق يتعامل فقط مع المسافات البيضاء والمسافات البادئة ولف الأسطر. يحافظ على ترتيب ومحتوى تعليمات Dockerfile الخاصة بك. طالما كان Dockerfile الأصلي صالحاً، يجب أن يعمل بناء الصورة الناتج بنفس الطريقة.

هل هذا هو نفسه التدقيق باستخدام hadolint؟

لا. هذه الأداة هي مُنسِّق وليست مدققاً. تقوم بإصلاح مشاكل النمط والتخطيط (المسافات، المسافات البادئة، اللف)، لكنها لن تحذرك من أفضل الممارسات (مثل استخدام صور أساسية محددة، فحوصات الصحة، أو أحجام الطبقات). لذلك، اجمعها مع hadolint أو مدقق Dockerfile آخر.

هل يمكنني فرض هذا النمط في CI؟

نعم. يمكنك تكوين dprint مع إضافة Dockerfile في مستودعك وتشغيل `dprint fmt` (أو `dprint check`) في خط أنابيب CI الخاص بك. بهذه الطريقة، يمكن أن يفشل CI عندما تنحرف ملفات Docker عن النمط المتوقع، بما يتطابق مع ما تراه في هذا المُنسِّق عبر الإنترنت.

هل يدعم عمليات البناء متعددة المراحل؟

نعم. يتم تنسيق ملفات Docker متعددة المراحل مثل أي ملف آخر. يتم الحفاظ على كل تعليمة FROM وCOPY وRUN وENV، ويتم جعل التخطيط متسقاً عبر جميع المراحل دون تغيير دلالات البناء.

هل يتم تحميل Dockerfile الخاص بي إلى خادم؟

بالنسبة لهذه الأداة، يتم إجراء التنسيق عبر نقطة نهاية خلفية آمنة باستخدام مُنسِّق قائم على dprint. يتم استخدام مصدرك لحساب الاستجابة ولا يُقصد تخزينه على المدى الطويل. كما هو الحال دائماً، تجنب لصق تفاصيل البنية التحتية شديدة السرية في أي أداة عبر الإنترنت إلا إذا كنت تتحكم في المكدس بالكامل.

Pro Tips

Best Practice

قم بتشغيل التنسيق تلقائيًا في CI بحيث لا ينحرف نمط Dockerfile بين الخدمات أو الفرق.

Best Practice

اقترن هذه الأداة المنسقة مع مدقق مثل hadolint لتغطية كل من التخطيط وإرشادات أفضل الممارسات.

Best Practice

اتفق على قالب Dockerfile متعدد المراحل في بداية المشروع وحافظ على تنسيقه بحيث تتبع الخدمات الجديدة نفس الهيكل.

Best Practice

إذا كنت تعمل في مستودع أحادي، شارك تكوين dprint واحد بحيث تستخدم أكواد التطبيقات وأكواد البنية التحتية وملفات Docker نفس الاتفاقيات.

Additional Resources

Other Tools