Loading…

সম্পর্কে বিনামূল্যে অনলাইন Dockerfile ফরম্যাটার

অগোছালো Dockerfile? ভাঙা ইন্ডেন্টেশন, অসামঞ্জস্যপূর্ণ স্পেসিং এবং অপাঠযোগ্য RUN চেইন? এই Dockerfile ফরম্যাটার একটি dprint-ভিত্তিক ইঞ্জিন (একটি সুরক্ষিত ব্যাকএন্ডের মাধ্যমে) ব্যবহার করে আপনার Dockerfiles এবং Containerfiles একটি পরিষ্কার, মতামতভিত্তিক লেআউট দিয়ে স্বাভাবিক করে। এটি আপনার নির্দেশাবলী ঠিক জায়গায় রাখে যখন ফাইলটি পর্যালোচনা, সংস্করণ এবং পরিবেশ জুড়ে স্বয়ংক্রিয় করা সহজ করে তোলে।

Dockerfile ফরম্যাটারের মূল বৈশিষ্ট্য

  • Dockerfiles এবং Containerfiles-এর জন্য ইন্ডেন্টেশন, স্পেসিং এবং লাইন র‍্যাপিং পরিষ্কার করে
  • সামঞ্জস্যপূর্ণ ব্যাকস্ল্যাশ এবং ইন্ডেন্টেশন সহ মাল্টি-লাইন RUN নির্দেশাবলী স্বাভাবিক করে
  • Dockerfile শব্দার্থবিদ্যা সম্মান করে – কোন নির্দেশ পুনর্বিন্যাস নেই, কোন শেল লজিক পরিবর্তন নেই
  • নির্ধারক আউটপুট: একই ইনপুট এবং সংস্করণ ⇒ একই ফরম্যাট করা Dockerfile
  • dprint ব্যবহার করে প্রি-কমিট হুক, মনোরেপো এবং CI কাজের জন্য নিখুঁত সঙ্গী
  • সিনট্যাক্স হাইলাইটিং, ডিফ-বন্ধুত্বপূর্ণ আউটপুট এবং কপি/ডাউনলোড অ্যাকশন সহ ওয়েব-ভিত্তিক এডিটর
  • মাল্টি-স্টেজ বিল্ড, বিল্ড আর্গুমেন্ট এবং সাধারণ Node/.NET/Go ইমেজের সাথে ভাল কাজ করে

🛠️ কিভাবে একটি Dockerfile ফরম্যাট করবেন for dockerfile-formatter

1

১. আপনার Dockerfile পেস্ট বা আপলোড করুন

এডিটরে আপনার Dockerfile পেস্ট করুন অথবা আপনার প্রজেক্ট থেকে একটি Dockerfile/Containerfile ড্রপ করুন। ছোট স্নিপেট (যেমন একটি একক FROM/RUN ব্লক) ও কাজ করবে যদি আপনি শুধু পরীক্ষা করতে চান।

2

২. ফরম্যাটার চালান

"ফরম্যাট" ক্লিক করুন। টুলটি আপনার সোর্স একটি নিরাপদ, dprint-ভিত্তিক ব্যাকএন্ডে পাঠায় যা এক্সিকিউশন লজিক স্পর্শ না করে ইন্ডেন্টেশন, স্পেসিং, অ্যারে-স্টাইল নির্দেশাবলী এবং মাল্টি-লাইন RUN চেইন সামঞ্জস্য করে।

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 চেইন পুনরায় প্রবাহিত করতে পারেদীর্ঘ শেল পাইপলাইন 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

ফরম্যাটিং কি আমার ইমেজ বিল্ডকে পরিবর্তন করে?

না। ফরম্যাটার শুধুমাত্র হোয়াইটস্পেস, ইন্ডেন্টেশন এবং লাইন র‍্যাপিং স্পর্শ করে। এটি আপনার Dockerfile নির্দেশাবলীর ক্রম এবং বিষয়বস্তু সংরক্ষণ করে। যতক্ষণ আপনার মূল Dockerfile বৈধ ছিল, ফলস্বরূপ ইমেজ বিল্ড একইভাবে আচরণ করা উচিত।

এটি কি hadolint দিয়ে লিন্টিংয়ের মতো একই?

না। এই টুলটি একটি ফরম্যাটার, লিন্টার নয়। এটি স্টাইল এবং লেআউট সমস্যা (স্পেসিং, ইন্ডেন্টেশন, র‍্যাপিং) ঠিক করে, কিন্তু এটি আপনাকে সেরা অনুশীলন (যেমন নির্দিষ্ট বেস ইমেজ, হেলথচেক, বা লেয়ার সাইজ ব্যবহার) সম্পর্কে সতর্ক করবে না। এর জন্য, এটিকে hadolint বা অন্য কোনো Dockerfile লিন্টারের সাথে একত্রিত করুন।

আমি কি CI-তে এই স্টাইল প্রয়োগ করতে পারি?

হ্যাঁ। আপনি আপনার রেপোজিটরিতে Dockerfile প্লাগইন সহ dprint কনফিগার করতে পারেন এবং আপনার CI পাইপলাইনে `dprint fmt` (বা `dprint check`) চালাতে পারেন। এইভাবে, Dockerfiles প্রত্যাশিত স্টাইল থেকে বিচ্যুত হলে CI ব্যর্থ হতে পারে, যা আপনি এই অনলাইন ফরম্যাটারে দেখেন তার সাথে মেলে।

এটি কি মাল্টি-স্টেজ বিল্ড সমর্থন করে?

হ্যাঁ। মাল্টি-স্টেজ Dockerfiles অন্য যেকোনো ফাইলের মতো ফরম্যাট করা হয়। প্রতিটি FROM, COPY, RUN এবং ENV নির্দেশ সংরক্ষিত থাকে, এবং বিল্ড সেমান্টিক্স পরিবর্তন না করেই সমস্ত স্টেজ জুড়ে লেআউট সামঞ্জস্যপূর্ণ করা হয়।

আমার Dockerfile কি একটি সার্ভারে আপলোড করা হয়?

এই টুলের জন্য, ফরম্যাটিং একটি dprint-ভিত্তিক ফরম্যাটার ব্যবহার করে একটি সুরক্ষিত ব্যাকএন্ড এন্ডপয়েন্টের মাধ্যমে সম্পাদিত হয়। আপনার সোর্সটি প্রতিক্রিয়া গণনা করতে ব্যবহৃত হয় এবং দীর্ঘমেয়াদী সংরক্ষণের উদ্দেশ্যে নয়। সর্বদা যেমন, আপনি সম্পূর্ণ স্ট্যাক নিয়ন্ত্রণ না করা পর্যন্ত অত্যন্ত গোপনীয় অবকাঠামোর বিবরণ যেকোনো অনলাইন টুলে পেস্ট করা এড়িয়ে চলুন।

Pro Tips

Best Practice

CI-তে স্বয়ংক্রিয়ভাবে ফরম্যাটিং চালান যাতে ডকারফাইল স্টাইল সার্ভিস বা দলগুলোর মধ্যে কখনোই বিচ্যুত না হয়।

Best Practice

লেআউট এবং সেরা অনুশীলনের নির্দেশিকা উভয়ই কভার করতে এই ফরম্যাটারটিকে হ্যাডোলিন্টের মতো একটি লিন্টারের সাথে জুড়ে দিন।

Best Practice

একটি প্রকল্পের শুরুতে একটি স্ট্যান্ডার্ড মাল্টি-স্টেজ ডকারফাইল টেমপ্লেটে সম্মত হন এবং এটি ফরম্যাটেড রাখুন যাতে নতুন সার্ভিসগুলি একই কাঠামো অনুসরণ করে।

Best Practice

আপনি যদি একটি মনোরেপোতে কাজ করেন, একটি একক dprint কনফিগারেশন শেয়ার করুন যাতে অ্যাপ্লিকেশন কোড, ইনফ্রা কোড এবং ডকারফাইলগুলি সামঞ্জস্যপূর্ণ কনভেনশন ব্যবহার করে।

Additional Resources

Other Tools