Loading…

के बारे में मुफ्त ऑनलाइन Dockerfile फॉर्मेटर

अव्यवस्थित Dockerfile? टूटी हुई इंडेंटेशन, असंगत स्पेसिंग और अपठनीय RUN चेन? यह Dockerfile फॉर्मेटर एक dprint-आधारित इंजन (एक सुरक्षित बैकएंड के माध्यम से) का उपयोग करके आपके Dockerfiles और Containerfiles को एक साफ, राय-आधारित लेआउट के साथ मानकीकृत करता है। यह आपके निर्देशों को बिल्कुल उनके स्थान पर रखता है, जबकि फ़ाइल को समीक्षा, संस्करण और वातावरणों में स्वचालित करने में आसान बनाता है।

Dockerfile फॉर्मेटर की मुख्य विशेषताएँ

  • Dockerfiles और Containerfiles के लिए इंडेंटेशन, स्पेसिंग और लाइन रैपिंग साफ करता है
  • सुसंगत बैकस्लैश और इंडेंटेशन के साथ मल्टी-लाइन RUN निर्देशों को मानकीकृत करता है
  • Dockerfile शब्दार्थ का सम्मान करता है – कोई निर्देश पुन: क्रमबद्धता नहीं, कोई शेल लॉजिक परिवर्तन नहीं
  • निर्धारक आउटपुट: समान इनपुट और संस्करण ⇒ समान फॉर्मेटेड Dockerfile
  • प्री-कमिट हुक, मोनोरेपो और 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 बिल्ड फाइलें
ContainerfileContainerfilePodman / Buildah स्टाइल कॉन्फ़िगरेशन फाइलें
इनलाइन स्निपेट्सFROM node:18-alpineत्वरित परीक्षणों के लिए छोटे फ्रैगमेंट्स या उदाहरण भी समर्थित हैं

फॉर्मेटिंग व्यवहार (dprint-स्टाइल)

इस टूल द्वारा उपयोग किए जाने वाले अंतर्निहित dprint प्लगइन के उच्च-स्तरीय व्यवहार:

क्षेत्रव्यवहारउदाहरण
इंडेंटेशनRUN और अन्य निर्देशों में जारी रेखाओं के लिए इंडेंटेशन को सामान्य करता हैRUN set -eux; \\n npm ci; \\n npm cache clean --force
सूचियाँ और ऐरेCMD/ENTRYPOINT/HEALTHCHECK के लिए JSON-स्टाइल ऐरे में स्पेसिंग साफ करता हैCMD ["npm", "start"] → CMD ["npm", "start"] (लेकिन सुसंगत स्पेस के साथ)
स्पेसिंगअर्थ को संरक्षित करते हुए निर्देशों के आसपास के अनावश्यक स्पेस हटाता हैENV NODE_ENV=production
लाइन रैपिंगपठनीयता के लिए लंबी RUN चेन्स को रिफ्लो कर सकता है बिना क्रम बदलेलंबी शेल पाइपलाइन्स डिफ्स में स्कैन और समीक्षा करने में आसान हो जाती हैं
टिप्पणियाँनिर्देशों के साथ पूर्ण-पंक्ति और इनलाइन टिप्पणियों को संरक्षित करता है# बिल्ड स्टेज के लिए बेस इमेज\nFROM node:18 AS build

गैर-लक्ष्य

यह फॉर्मेटर जानबूझकर लेआउट तक सीमित है, ताकि आप इसे अन्य DevOps टूल्स के साथ जोड़ सकें:

आइटमसंभाला गया?नोट्स
Hadolint-शैली लिंटिंगसर्वोत्तम-अभ्यास जांच और चेतावनियों के लिए hadolint या समान टूल्स का उपयोग करें
सुरक्षा स्कैनिंगइमेज या रजिस्ट्रियों की कोई CVE या भेद्यता स्कैनिंग नहीं
इमेज बिल्डिंगdocker build निष्पादित नहीं करता या Docker Engine के साथ इंटरैक्ट नहीं करता
निर्देश पुन: क्रमबद्धतानिर्देशों को कभी पुन: क्रमबद्ध नहीं करता; केवल इंडेंटेशन और व्हाइटस्पेस परिवर्तन
बेस इमेज हार्डनिंगबेस इमेज की सिफारिश नहीं करता; यह आपके द्वारा प्रदान किए गए को फॉर्मेट करता है

CLI और CI समकक्ष

परिणाम पसंद आया? dprint और पूरक टूल्स के साथ स्थानीय रूप से और CI में समान व्यवहार दोहराएं।

यूनिवर्सल (dprint)

dprint आरंभ करें और Dockerfile प्लगइन जोड़ें

dprint init
# dprint.json में, जोड़ें:
# {
#   "plugins": ["https://plugins.dprint.dev/dockerfile-0.x.wasm"]
# }
# फिर अपने Dockerfiles फॉर्मेट करें:
dprint fmt Dockerfile

इस ऑनलाइन फॉर्मेटर के सबसे निकट मेल, ताकि डेवलपर्स और CI एक ही शैली का उपयोग करें।

Linux/macOS

hadolint के साथ लिंट करें (फॉर्मेटिंग को पूरक)

hadolint Dockerfile

फॉर्मेटिंग (शैली) को लिंटिंग (सर्वोत्तम अभ्यास, छोटी इमेज, हेल्थचेक) के साथ जोड़ें।

Git / pre-commit

कमिट से पहले बदले गए Dockerfiles पर dprint चलाएं

# .pre-commit-config.yaml (संकल्पनात्मक)
- repo: local
  hooks:
    - id: dprint-dockerfile
      name: dprint Dockerfiles
      entry: dprint fmt
      language: system
      files: "(Dockerfile|Containerfile)$"

गारंटी देता है कि मुख्य में मर्ज किया गया हर Dockerfile पहले से ही फॉर्मेटेड है।

सामान्य उपयोग के मामले

डेव और प्लेटफॉर्म इंजीनियरिंग

  • कोड समीक्षा से पहले माइक्रोसर्विसेज में Dockerfiles को सामान्य बनाएं
  • कई टीमों या टेम्पलेट्स से विरासत में मिले पुराने Dockerfiles को साफ करें
  • इमेज, बेस OS संस्करण या बिल्ड रणनीतियों को माइग्रेट करते समय शैली को मानकीकृत करें
# विशिष्ट मल्टी-स्टेज Dockerfile (साफ, समीक्षा-अनुकूल)\nFROM node:18 AS build\nWORKDIR /app\nCOPY package*.json ./\nRUN npm ci && npm cache clean --force\nCOPY . .\nRUN npm run build\n\nFROM node:18-alpine\nWORKDIR /app\nCOPY --from=build /app/dist ./\nCMD ["node", "index.js"]

CI/CD पाइपलाइन

  • बिल्ड फेल करें जब Dockerfiles ठीक से फॉर्मेटेड न हों
  • प्री-कमिट हुक या CI जॉब के माध्यम से फीचर ब्रांचेज पर स्टाइल को ऑटो-फिक्स करें
  • लॉन्ग-लिव्ड मोनोरेपो और प्लेटफॉर्म रेपो में Docker कॉन्फ़िगरेशन को पठनीय बनाए रखें
# उदाहरण Git प्री-कमिट हुक (स्यूडो-कोड)\n#!/bin/sh\nchanged=$(git diff --cached --name-only --diff-filter=ACM | grep -E 'Dockerfile|Containerfile' || true)\n[ -z "$changed" ] && exit 0\ndprint fmt $changed\ngit add $changed

टीम ऑनबोर्डिंग और स्थिरता

  • नए टीम सदस्यों को एकल, राय-आधारित Dockerfile स्टाइल दें
  • PRs से कोड-स्टाइल बहस हटाएं: फॉर्मेटर को सत्य का स्रोत बनने दें
  • स्थानीय फॉर्मेटिंग, रेपो हुक और CI जॉब को एक ही dprint कॉन्फ़िग के आसपास संरेखित करें
# डॉक्स/ऑनबोर्डिंग.md के लिए उदाहरण स्निपेट\n1. स्थानीय रूप से dprint इंस्टॉल करें\n2. प्लेटफॉर्म रेपो से साझा dprint.json कॉपी करें\n3. पुल रिक्वेस्ट खोलने से पहले `dprint fmt Dockerfile` चलाएं

❓ Frequently Asked Questions

क्या फॉर्मेटिंग मेरी इमेज बिल्ड को बदलती है?

नहीं। फॉर्मेटर केवल व्हाइटस्पेस, इंडेंटेशन और लाइन रैपिंग को छूता है। यह आपके Dockerfile निर्देशों के क्रम और सामग्री को संरक्षित रखता है। जब तक आपका मूल Dockerfile वैध था, परिणामी इमेज बिल्ड वैसे ही व्यवहार करनी चाहिए।

क्या यह hadolint के साथ लिंटिंग के समान है?

नहीं। यह टूल एक फॉर्मेटर है, लिंटर नहीं। यह स्टाइल और लेआउट समस्याओं (स्पेसिंग, इंडेंटेशन, रैपिंग) को ठीक करता है, लेकिन यह आपको सर्वोत्तम प्रथाओं (जैसे विशिष्ट बेस इमेज, हेल्थचेक, या लेयर साइज का उपयोग) के बारे में चेतावनी नहीं देगा। उसके लिए, इसे hadolint या किसी अन्य Dockerfile लिंटर के साथ संयोजित करें।

क्या मैं इस स्टाइल को CI में लागू कर सकता हूं?

हां। आप अपने रेपो में Dockerfile प्लगइन के साथ dprint कॉन्फ़िगर कर सकते हैं और अपने CI पाइपलाइन में `dprint fmt` (या `dprint check`) चला सकते हैं। इस तरह, CI फेल हो सकता है जब Dockerfiles अपेक्षित स्टाइल से विचलित होते हैं, जो आप इस ऑनलाइन फॉर्मेटर में देखते हैं उससे मेल खाता है।

क्या यह मल्टी-स्टेज बिल्ड का समर्थन करता है?

हां। मल्टी-स्टेज Dockerfiles को किसी अन्य फाइल की तरह फॉर्मेट किया जाता है। प्रत्येक FROM, COPY, RUN और ENV निर्देश संरक्षित रहते हैं, और लेआउट बिल्ड सेमेंटिक्स बदले बिना सभी स्टेज में सुसंगत बनाया जाता है।

क्या मेरा Dockerfile सर्वर पर अपलोड किया जाता है?

इस टूल के लिए, फॉर्मेटिंग dprint-आधारित फॉर्मेटर का उपयोग करके एक सुरक्षित बैकएंड एंडपॉइंट के माध्यम से की जाती है। आपका स्रोत प्रतिक्रिया की गणना के लिए उपयोग किया जाता है और इसे दीर्घकालिक संग्रहीत करने का इरादा नहीं है। हमेशा की तरह, अत्यधिक गोपनीय इन्फ्रास्ट्रक्चर विवरणों को किसी भी ऑनलाइन टूल में पेस्ट करने से बचें जब तक कि आप पूर्ण स्टैक को नियंत्रित न करते हों।

Pro Tips

Best Practice

सीआई में स्वचालित रूप से फॉर्मेटिंग चलाएं ताकि डॉकरफाइल स्टाइल सेवाओं या टीमों के बीच कभी भी भटके नहीं।

Best Practice

लेआउट और सर्वोत्तम अभ्यास मार्गदर्शन दोनों को कवर करने के लिए इस फॉर्मेटर को हैडोलिंट जैसे लिंटर के साथ जोड़ें।

Best Practice

प्रोजेक्ट की शुरुआत में एक मानक मल्टी-स्टेज डॉकरफाइल टेम्पलेट पर सहमत हों और इसे फॉर्मेटेड रखें ताकि नई सेवाएं समान संरचना का पालन करें।

Best Practice

यदि आप मोनोरिपो में काम करते हैं, तो एक ही dprint कॉन्फ़िगरेशन साझा करें ताकि एप्लिकेशन कोड, इन्फ्रा कोड और डॉकरफाइलें सुसंगत कन्वेंशन्स का उपयोग करें।

Additional Resources

Other Tools