Dockerfile फॉर्मेटर की मुख्य विशेषताएँ
- Dockerfiles और Containerfiles के लिए इंडेंटेशन, स्पेसिंग और लाइन रैपिंग साफ करता है
- सुसंगत बैकस्लैश और इंडेंटेशन के साथ मल्टी-लाइन RUN निर्देशों को मानकीकृत करता है
- Dockerfile शब्दार्थ का सम्मान करता है – कोई निर्देश पुन: क्रमबद्धता नहीं, कोई शेल लॉजिक परिवर्तन नहीं
- निर्धारक आउटपुट: समान इनपुट और संस्करण ⇒ समान फॉर्मेटेड Dockerfile
- प्री-कमिट हुक, मोनोरेपो और CI जॉब्स के लिए dprint का उपयोग करने वाला सही साथी
- सिंटैक्स हाइलाइटिंग, डिफ-अनुकूल आउटपुट और कॉपी/डाउनलोड क्रियाओं के साथ वेब-आधारित संपादक
- मल्टी-स्टेज बिल्ड, बिल्ड आर्ग्स और सामान्य Node/.NET/Go इमेज के साथ अच्छी तरह काम करता है
🛠️ Dockerfile को कैसे फॉर्मेट करें for dockerfile-formatter
1. अपना Dockerfile पेस्ट या अपलोड करें
अपना Dockerfile एडिटर में पेस्ट करें या अपने प्रोजेक्ट से एक Dockerfile/Containerfile ड्रॉप करें। छोटे स्निपेट्स (जैसे एकल FROM/RUN ब्लॉक) भी काम करते हैं यदि आप सिर्फ प्रयोग करना चाहते हैं।
2. फॉर्मेटर चलाएं
"फॉर्मेट" पर क्लिक करें। यह टूल आपके स्रोत को एक सुरक्षित, dprint-आधारित बैकेंड पर भेजता है जो इंडेंटेशन, स्पेसिंग, ऐरे-स्टाइल निर्देशों और मल्टी-लाइन RUN चेन्स को एडजस्ट करता है बिना एक्जीक्यूशन लॉजिक को छुए।
3. समीक्षा करें, कॉपी करें या डाउनलोड करें
फॉर्मेटेड आउटपुट की अपनी मूल फाइल से तुलना करें। जब आप संतुष्ट हों, तो परिणाम को वापस अपने रेपो में कॉपी करें या फॉर्मेटेड Dockerfile को सीधे कमिट करने के लिए डाउनलोड करें।
तकनीकी विवरण
समर्थित फाइल प्रकार
यह फॉर्मेटर Docker बिल्ड निर्देशों और Docker, Podman तथा समान टूल्स में उपयोग होने वाली संगत कंटेनर बिल्ड फाइलों को लक्षित करता है।
| प्रकार | उदाहरण | टिप्पणियाँ |
|---|---|---|
| Dockerfile | Dockerfile, Dockerfile.prod, Dockerfile.node18 | इमेजेस के लिए क्लासिक Docker बिल्ड फाइलें |
| Containerfile | Containerfile | Podman / 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
क्या फॉर्मेटिंग मेरी इमेज बिल्ड को बदलती है?
क्या यह hadolint के साथ लिंटिंग के समान है?
क्या मैं इस स्टाइल को CI में लागू कर सकता हूं?
क्या यह मल्टी-स्टेज बिल्ड का समर्थन करता है?
क्या मेरा Dockerfile सर्वर पर अपलोड किया जाता है?
Pro Tips
सीआई में स्वचालित रूप से फॉर्मेटिंग चलाएं ताकि डॉकरफाइल स्टाइल सेवाओं या टीमों के बीच कभी भी भटके नहीं।
लेआउट और सर्वोत्तम अभ्यास मार्गदर्शन दोनों को कवर करने के लिए इस फॉर्मेटर को हैडोलिंट जैसे लिंटर के साथ जोड़ें।
प्रोजेक्ट की शुरुआत में एक मानक मल्टी-स्टेज डॉकरफाइल टेम्पलेट पर सहमत हों और इसे फॉर्मेटेड रखें ताकि नई सेवाएं समान संरचना का पालन करें।
यदि आप मोनोरिपो में काम करते हैं, तो एक ही dprint कॉन्फ़िगरेशन साझा करें ताकि एप्लिकेशन कोड, इन्फ्रा कोड और डॉकरफाइलें सुसंगत कन्वेंशन्स का उपयोग करें।
Additional Resources
Other Tools
- सीएसएस सुंदरीकरण
- एचटीएमएल सुंदरीकरण
- जावास्क्रिप्ट सुंदरीकरण
- पीएचपी सुंदरीकरण
- रंग चयनकर्ता
- स्प्राइट एक्सट्रैक्टर
- बेस64 डिकोडर
- बेस64 एनकोडर
- सीशार्प फॉर्मेटर
- सीएसवी फॉर्मेटर
- एल्म फॉर्मेटर
- ईएनवी फॉर्मेटर
- गो फॉर्मेटर
- ग्राफक्यूएल फॉर्मेटर
- एचसीएल फॉर्मेटर
- आईएनआई फॉर्मेटर
- जेएसओएन फॉर्मेटर
- लेटेक्स फॉर्मेटर
- मार्कडाउन फॉर्मेटर
- ऑब्जेक्टिवसी फॉर्मेटर
- Php Formatter
- प्रोटो फॉर्मेटर
- पायथन फॉर्मेटर
- रूबी फॉर्मेटर
- रस्ट फॉर्मेटर
- स्काला फॉर्मेटर
- शेल स्क्रिप्ट फॉर्मेटर
- एसक्यूएल फॉर्मेटर
- SVG फॉर्मेटर
- Swift फॉर्मेटर
- TOML फॉर्मेटर
- Typescript Formatter
- XML फॉर्मेटर
- YAML फॉर्मेटर
- Yarn फॉर्मेटर
- सीएसएस मिनीफायर
- Html Minifier
- Javascript Minifier
- जेएसओएन मिनीफायर
- XML मिनिफायर
- एचटीटीपी हेडर्स दर्शक
- पीडीएफ से टेक्स्ट
- रेगेक्स परीक्षक
- एसईआरपी रैंक जांचकर्ता
- Whois लुकअप