Dockerfile ফরম্যাটারের মূল বৈশিষ্ট্য
- Dockerfiles এবং Containerfiles-এর জন্য ইন্ডেন্টেশন, স্পেসিং এবং লাইন র্যাপিং পরিষ্কার করে
- সামঞ্জস্যপূর্ণ ব্যাকস্ল্যাশ এবং ইন্ডেন্টেশন সহ মাল্টি-লাইন RUN নির্দেশাবলী স্বাভাবিক করে
- Dockerfile শব্দার্থবিদ্যা সম্মান করে – কোন নির্দেশ পুনর্বিন্যাস নেই, কোন শেল লজিক পরিবর্তন নেই
- নির্ধারক আউটপুট: একই ইনপুট এবং সংস্করণ ⇒ একই ফরম্যাট করা Dockerfile
- dprint ব্যবহার করে প্রি-কমিট হুক, মনোরেপো এবং CI কাজের জন্য নিখুঁত সঙ্গী
- সিনট্যাক্স হাইলাইটিং, ডিফ-বন্ধুত্বপূর্ণ আউটপুট এবং কপি/ডাউনলোড অ্যাকশন সহ ওয়েব-ভিত্তিক এডিটর
- মাল্টি-স্টেজ বিল্ড, বিল্ড আর্গুমেন্ট এবং সাধারণ Node/.NET/Go ইমেজের সাথে ভাল কাজ করে
🛠️ কিভাবে একটি Dockerfile ফরম্যাট করবেন for dockerfile-formatter
১. আপনার Dockerfile পেস্ট বা আপলোড করুন
এডিটরে আপনার Dockerfile পেস্ট করুন অথবা আপনার প্রজেক্ট থেকে একটি Dockerfile/Containerfile ড্রপ করুন। ছোট স্নিপেট (যেমন একটি একক FROM/RUN ব্লক) ও কাজ করবে যদি আপনি শুধু পরীক্ষা করতে চান।
২. ফরম্যাটার চালান
"ফরম্যাট" ক্লিক করুন। টুলটি আপনার সোর্স একটি নিরাপদ, dprint-ভিত্তিক ব্যাকএন্ডে পাঠায় যা এক্সিকিউশন লজিক স্পর্শ না করে ইন্ডেন্টেশন, স্পেসিং, অ্যারে-স্টাইল নির্দেশাবলী এবং মাল্টি-লাইন RUN চেইন সামঞ্জস্য করে।
৩. পর্যালোচনা, কপি বা ডাউনলোড করুন
ফরম্যাট করা আউটপুট আপনার মূল ফাইলের সাথে তুলনা করুন। যখন আপনি সন্তুষ্ট হন, ফলাফলটি আপনার রিপোতে ফিরে কপি করুন অথবা ফরম্যাট করা 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 চেইন পুনরায় প্রবাহিত করতে পারে | দীর্ঘ শেল পাইপলাইন diffs-এ স্ক্যান এবং পর্যালোচনা করা সহজ হয়ে যায় |
| মন্তব্য | নির্দেশাবলীর পাশে সম্পূর্ণ-লাইন এবং ইনলাইন মন্তব্য সংরক্ষণ করে | # বিল্ড স্টেজের জন্য বেস ইমেজ FROM node:18 AS build |
অ-লক্ষ্য
এই ফরম্যাটারটি ইচ্ছাকৃতভাবে লেআউটে সীমাবদ্ধ, যাতে আপনি এটিকে অন্যান্য DevOps টুলের সাথে একত্রিত করতে পারেন:
| আইটেম | হ্যান্ডেল করা হয়েছে? | নোট |
|---|---|---|
| Hadolint-স্টাইল লিন্টিং | ❌ | সেরা-অনুশীলন চেক এবং সতর্কতার জন্য hadolint বা অনুরূপ টুল ব্যবহার করুন |
| সুরক্ষা স্ক্যানিং | ❌ | ইমেজ বা রেজিস্ট্রির CVE বা দুর্বলতা স্ক্যানিং নেই |
| ইমেজ বিল্ডিং | ❌ | docker build চালায় না বা Docker ইঞ্জিনের সাথে ইন্টারঅ্যাক্ট করে না |
| নির্দেশ পুনর্বিন্যাস | ❌ | নির্দেশাবলী কখনই পুনর্বিন্যাস করে না; শুধুমাত্র ইন্ডেন্টেশন এবং হোয়াইটস্পেস পরিবর্তন |
| বেস ইমেজ হার্ডেনিং | ❌ | বেস ইমেজ সুপারিশ করে না; আপনি যা সরবরাহ করেন তা ফরম্যাট করে |
CLI এবং CI সমতুল্য
ফলাফল পছন্দ হয়েছে? dprint এবং পরিপূরক টুল দিয়ে স্থানীয়ভাবে এবং CI-এ একই আচরণ মিরর করুন।
সার্বজনীন (dprint)
dprint শুরু করুন এবং Dockerfile প্লাগইন যোগ করুন
dprint init
# dprint.json-এ, যোগ করুন:
# {
# "plugins": ["https://plugins.dprint.dev/dockerfile-0.x.wasm"]
# }
# তারপর আপনার Dockerfile ফরম্যাট করুন:
dprint fmt Dockerfileএই অনলাইন ফরম্যাটারের নিকটতম মিল, তাই ডেভেলপার এবং CI একই স্টাইল ব্যবহার করে।
Linux/macOS
hadolint দিয়ে লিন্ট করুন (ফরম্যাটিং পরিপূরক)
hadolint Dockerfileফরম্যাটিং (স্টাইল) লিন্টিং (সেরা অনুশীলন, ছোট ইমেজ, হেলথচেক) এর সাথে একত্রিত করুন।
Git / pre-commit
কমিট করার আগে পরিবর্তিত Dockerfile-এ 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 স্টাইল দিন
- PR থেকে কোড-স্টাইল বিতর্ক সরান: ফরম্যাটারকে সত্যের উৎস হতে দিন
- স্থানীয় ফরম্যাটিং, রেপো হুক এবং CI জব একই dprint কনফিগারেশনের সাথে সারিবদ্ধ করুন
# ডক্স/অনবোর্ডিং.এমডির জন্য উদাহরণ স্নিপেট\n1. স্থানীয়ভাবে dprint ইনস্টল করুন\n2. প্ল্যাটফর্ম রেপো থেকে শেয়ার করা dprint.json কপি করুন\n3. পুল রিকোয়েস্ট খোলার আগে `dprint fmt Dockerfile` চালান❓ Frequently Asked Questions
ফরম্যাটিং কি আমার ইমেজ বিল্ডকে পরিবর্তন করে?
এটি কি hadolint দিয়ে লিন্টিংয়ের মতো একই?
আমি কি CI-তে এই স্টাইল প্রয়োগ করতে পারি?
এটি কি মাল্টি-স্টেজ বিল্ড সমর্থন করে?
আমার Dockerfile কি একটি সার্ভারে আপলোড করা হয়?
Pro Tips
CI-তে স্বয়ংক্রিয়ভাবে ফরম্যাটিং চালান যাতে ডকারফাইল স্টাইল সার্ভিস বা দলগুলোর মধ্যে কখনোই বিচ্যুত না হয়।
লেআউট এবং সেরা অনুশীলনের নির্দেশিকা উভয়ই কভার করতে এই ফরম্যাটারটিকে হ্যাডোলিন্টের মতো একটি লিন্টারের সাথে জুড়ে দিন।
একটি প্রকল্পের শুরুতে একটি স্ট্যান্ডার্ড মাল্টি-স্টেজ ডকারফাইল টেমপ্লেটে সম্মত হন এবং এটি ফরম্যাটেড রাখুন যাতে নতুন সার্ভিসগুলি একই কাঠামো অনুসরণ করে।
আপনি যদি একটি মনোরেপোতে কাজ করেন, একটি একক dprint কনফিগারেশন শেয়ার করুন যাতে অ্যাপ্লিকেশন কোড, ইনফ্রা কোড এবং ডকারফাইলগুলি সামঞ্জস্যপূর্ণ কনভেনশন ব্যবহার করে।
Additional Resources
Other Tools
- সিএসএস সৌন্দর্যবর্ধক
- এইচটিএমএল সৌন্দর্যবর্ধক
- জাভাস্ক্রিপ্ট সৌন্দর্যবর্ধক
- পিএইচপি সৌন্দর্যবর্ধক
- রং নির্বাচক
- স্প্রাইট এক্সট্র্যাক্টর
- বেস৬৪ ডিকোডার
- বেস৬৪ এনকোডার
- সি-শার্প ফরম্যাটার
- সিএসভি ফরম্যাটার
- এলম ফরম্যাটার
- ইএনভি ফরম্যাটার
- গো ফরম্যাটার
- গ্রাফকিউএল ফরম্যাটার
- এইচসিএল ফরম্যাটার
- আইএনআই ফরম্যাটার
- জেসন ফরম্যাটার
- ল্যাটেক ফরম্যাটার
- মার্কডাউন ফরম্যাটার
- অবজেক্টিভসি ফরম্যাটার
- Php Formatter
- প্রোটো ফরম্যাটার
- পাইথন ফরম্যাটার
- রুবি ফরম্যাটার
- রাস্ট ফরম্যাটার
- স্কালা ফরম্যাটার
- শেল স্ক্রিপ্ট ফরম্যাটার
- এসকিউএল ফরম্যাটার
- SVG ফরম্যাটার
- Swift ফরম্যাটার
- TOML ফরম্যাটার
- Typescript Formatter
- XML ফরম্যাটার
- YAML ফরম্যাটার
- Yarn ফরম্যাটার
- সিএসএস মিনিফায়ার
- Html Minifier
- Javascript Minifier
- জেসন মিনিফায়ার
- XML মিনিফায়ার
- এইচটিটিপি হেডার ভিউয়ার
- পিডিএফ থেকে টেক্সট
- রেজেক্স টেস্টার
- সার্প র্যাংক চেকার
- Whois লুকআপ