Omnikit
ডেভফাইলঅর্থসব টুল
Ctrl K
ডেভেলপার টুলফাইল টুলঅর্থ ক্যালকুলেটরসব টুল
হোমডেভেলপার টুলDockerfile লিন্টার
EnglishالعربيةবাংলাDeutschEspañolFrançaisPolskiPortuguêsРусский

Dockerfile লিন্টার

ডেভ

55টি hadolint নিয়মে Dockerfile পরীক্ষা করুন: নির্দিষ্ট ভার্সন, root ব্যবহারকারী, ক্যাশ এবং আরও

আপনার ব্রাউজারে চলে। আপনি যা লেখেন তা কোথাও পাঠানো হয় না। যাচাই করা হয়েছে 16 অক্টোবর, 2026।

Dockerfile লিন্টার ফাইলটি বিল্ড না করেই পড়ে এবং ঝুঁকিপূর্ণ বা অপচয়কারী লাইনগুলো চিহ্নিত করে। এটি hadolint-এর 55টি DL নিয়ম প্রয়োগ করে, যেমন ভার্সন ছাড়া apt-get প্যাকেজের জন্য DL3008 এবং root হিসেবে চালানোর জন্য DL3002, এবং প্রতিটি সমস্যার লাইন, মাত্রা ও সমাধান দেয়। এটি আপনার ব্রাউজারে চলে, কোনো ইনস্টল ছাড়া এবং Docker ছাড়া।

এই পৃষ্ঠাটি ইংরেজি মূল লেখা থেকে যন্ত্রের সাহায্যে অনুবাদ করা হয়েছে। এই অনুবাদটি এখনও কোনো মানুষ পর্যালোচনা করেননি, তাই ইংরেজি সংস্করণটিকেই নির্ভরযোগ্য ধরুন। ইংরেজি মূল লেখাটি পড়ুন

এরপর:
  • .env ফাইল ভ্যালিডেটর dotenv যেভাবে পড়ে সেভাবে একটি .env ফাইল লাইন ধরে ধরে যাচাই করুন, এবং JSON বা YAML-এ রূপান্তর করুন
  • systemd OnCalendar Tester Check a systemd timer OnCalendar= value and see its next run times, or convert cron

অনলাইনে Dockerfile কীভাবে পরীক্ষা করবেন

1

বাক্সে Dockerfile পেস্ট করুন, ফাইলটি খুলুন, অথবা একটি উদাহরণ দেখুন-এ ক্লিক করুন।

2

লাইন অনুযায়ী সাজানো সমস্যাগুলো পড়ুন: প্রতিটির একটি মাত্রা, hadolint কোড, কী ভুল এবং কীভাবে ঠিক করবেন তা আছে।

3

কোনো সমস্যায় ক্লিক করে তার লাইনে যান, ঠিক করুন, এবং টাইপ করার সাথে সাথে তালিকা হালনাগাদ হতে দেখুন।

4

সমস্যাগুলো টেক্সট হিসেবে নিতে রিপোর্ট কপি করুন-এ ক্লিক করুন, pull request বা টিকিটের জন্য।

Dockerfile লিন্টার সম্পর্কে

একটি Dockerfile আজ বিল্ড হতে পারে আর পরের মাসে ভেঙে যেতে পারে: ভার্সন নির্দিষ্ট না করা বেস ইমেজ বদলে যায়, apt-get install নতুন ভার্সন নিয়ে আসে, কোনো লেয়ারে রেখে দেওয়া ক্যাশ ইমেজকে শত শত মেগাবাইট বড় করে। লিন্টার এগুলো প্রকাশের আগেই ধরে ফেলে। CI পাইপলাইনে hadolint হলো মানদণ্ড; এই পেজ আপনার ব্রাউজারে এর Dockerfile নিয়মগুলো প্রয়োগ করে।

কী পরীক্ষা করা হয়। প্রতিটি সমস্যা তার লাইন, hadolint কোড, একটি মাত্রা এবং এক লাইনের সমাধান জানায়। নিয়মগুলো পাঁচটি দলে ভাগ করা:

দল উদাহরণ
পুনরুৎপাদনযোগ্য বিল্ড DL3006 ট্যাগহীন ইমেজ, DL3007 latest, DL3008 apt-get, DL3013 pip, DL3016 npm, DL3018 apk
ছোট ইমেজ DL3009 apt তালিকা, DL3015 recommends, DL3019 apk ক্যাশ, DL3042 pip ক্যাশ, DL3059 অতিরিক্ত RUN লেয়ার
নিরাপত্তা DL3002 root ব্যবহারকারী, DL3004 sudo, DL4006 pipefail
সঠিকতা DL3011 পোর্টের সীমা, DL3021 COPY-এর গন্তব্য, DL3022 ও DL3023 স্টেজের নাম, DL3044 ENV, DL3061 ক্রম
স্পষ্ট উদ্দেশ্য DL3000 WORKDIR, DL3003 cd, DL3020 ADD, DL3025 JSON CMD, DL4000 MAINTAINER

এটি hadolint-এর কতটা কাছাকাছি। নিয়মগুলো hadolint 2.12-এর সোর্স কোড থেকে লেখা, এবং পরীক্ষাগুলো 80টির বেশি Dockerfile-এর জন্য আসল hadolint প্রোগ্রামের উত্তর ব্যবহার করে: একই লাইনে একই কোড, প্রতিবার। মাল্টি-স্টেজ বিল্ড, ONBUILD, ধারাবাহিক লাইন, escape ডিরেক্টিভ এবং লাইনের ভেতরের # hadolint ignore= মন্তব্য hadolint-এর মতোই আচরণ করে। RUN লাইনের ভেতরের শেল কোড নিয়ে ShellCheck-এর SC সতর্কতা অন্তর্ভুক্ত নয়।

কোনো নিয়ম বন্ধ করা। কোনো নির্দেশের আগের লাইনে # hadolint ignore=DL3008 লিখলে সেখানে ওই নিয়ম বাদ যায়, অথবা যেকোনো জায়গায় # hadolint global ignore=DL3059 লিখলে পুরো ফাইলে বাদ যায়। সারাংশে জানানো হয় কয়টি সমস্যা বন্ধ করা হয়েছে।

সবকিছু আপনার ব্রাউজারে চলে: আপনি যে Dockerfile পেস্ট করেন বা খোলেন তা কখনো আপলোড হয় না।

সাধারণ জিজ্ঞাসা

hadolint-এ DL3008 মানে কী?

DL3008 বলে যে একটি apt-get install লাইনে ভার্সন ছাড়া প্যাকেজের নাম আছে, তাই প্রতিটি বিল্ড ভিন্ন কিছু ইনস্টল করতে পারে। package=version লিখুন, যেমন curl=7.88.1-10+deb12u5, এবং বেস ইমেজের ভেতরে apt-cache policy curl দিয়ে বর্তমান ভার্সন খুঁজে নিন। ভার্সন নির্দিষ্ট করলে ইমেজ পুনরুৎপাদনযোগ্য হয়; ভার্সন হালনাগাদ করুন ইচ্ছাকৃতভাবে, দুর্ঘটনাবশত নয়।

শেষ USER কেন root হওয়া উচিত নয়?

root হিসেবে চলা কনটেইনারের ভেতরে root অধিকার থাকে, তাই অ্যাপ্লিকেশনে ঢুকে পড়া আক্রমণকারী বেশি কিছু করতে পারে, আর মাউন্ট করা ভলিউমে কোনো ভুল হোস্টের ফাইল বদলে দিতে পারে। একটি RUN-এ ব্যবহারকারী তৈরি করুন, যেমন useradd app, এবং স্টেজটি USER app দিয়ে শেষ করুন। এর আগের বিল্ড ধাপগুলো তবুও root হিসেবে চলতে পারে।

একই RUN-এ /var/lib/apt/lists কেন মুছবেন?

প্রতিটি RUN একটি লেয়ার তৈরি করে, এবং পরের লেয়ারে মুছে ফেলা ফাইল আগের লেয়ারে তবুও জায়গা নেয়। apt-get update কয়েক দশ মেগাবাইটের প্যাকেজ তালিকা ডাউনলোড করে, তাই একই RUN-এ && rm -rf /var/lib/apt/lists/* দিয়ে সেগুলো মুছুন। আলাদা RUN-এ মুছলে কিছুই সাশ্রয় হয় না।

এক লাইনের জন্য hadolint-এর কোনো নিয়ম কীভাবে উপেক্ষা করব?

নির্দেশের ঠিক উপরে একটি মন্তব্য লিখুন: # hadolint ignore=DL3008, অথবা কমা দিয়ে আলাদা করা কয়েকটি কোড। পুরো ফাইলে কোনো নিয়ম বন্ধ করতে যেকোনো জায়গায় # hadolint global ignore=DL3059 লিখুন। দুটোই hadolint-এ এবং এই পেজে কাজ করে, আর সারাংশ গুনে দেখায় কী বন্ধ করা হয়েছে।

এটি কি hadolint চালানোর মতোই?

Dockerfile নিয়মের ক্ষেত্রে হ্যাঁ: 55টি DL কোড, তাদের মাত্রা ও শর্ত hadolint 2.12 অনুসরণ করে, এবং পরীক্ষাগুলো 80টির বেশি ফাইলে আসল hadolint প্রোগ্রামের সাথে মিলিয়ে দেখে। অন্তর্ভুক্ত নয় RUN লাইনের ভেতরের শেল কোড নিয়ে ShellCheck-এর SC সতর্কতা, এবং যে নিয়মগুলোর জন্য কনফিগারেশন ফাইল লাগে, যেমন অনুমোদিত রেজিস্ট্রি।

Dockerfile-এ COPY ব্যবহার করব নাকি ADD?

ফাইল ও ফোল্ডারের জন্য COPY ব্যবহার করুন। ADD URL ডাউনলোডও করে এবং লোকাল tar আর্কাইভ খুলে ফেলে, যা ঠিক এটাই চাইলে কাজের আর না চাইলে অপ্রত্যাশিত। hadolint সাধারণ ফাইলের জন্য ADD-কে DL3020 হিসেবে চিহ্নিত করে, এবং একই আর্কাইভে tar -x-এর আগে থাকা COPY-কে DL3010 হিসেবে, যেখানে ADD এক ধাপেই কাজটি করত।

সূত্র

  • hadolint, the Haskell Dockerfile Linter (GitHub, v2.12.0)The DL rules, their levels and their exact conditions; the binary is the reference the tests compare against
  • Docker Docs, Dockerfile referenceInstruction syntax, continuation lines, the escape directive, exec and shell form
  • Docker Docs, Building best practicesPinning base images, apt-get cleanup in the same RUN, COPY over ADD, unprivileged USER

শেষ যাচাই 16 অক্টোবর, 2026।

হার ও নিয়ম বদলায়; কোনো অঙ্কের ওপর নির্ভর করার আগে সূত্রটি দেখে নিন।

এখনও আটকে আছেন? Dockerfile লিন্টার সম্পর্কে প্রশ্ন করুন আর যিনি জানেন তিনিই উত্তর দিতে পারেন। কোনো অ্যাকাউন্ট লাগবে না।

সম্পর্কিত টুল

সব ডেভেলপার টুল
রেগুলার এক্সপ্রেশন টেস্টারলাইভ হাইলাইট আর সহজ ভাষায় ব্যাখ্যাসহ JavaScript রেগুলার এক্সপ্রেশন পরীক্ষা করুনটেক্সট তুলনাদুটি টেক্সট পাশাপাশি তুলনা করুন এবং যোগ ও মোছা প্রতিটি লাইন দেখুনJSON তুলনাদুটি JSON ডকুমেন্ট তুলনা করে প্রতিটি যোগ হওয়া, বাদ পড়া ও বদলানো মান দেখুনOpen Graph প্রিভিউএকটি পেজ পেস্ট করুন এবং Facebook, LinkedIn, X, WhatsApp ও Slack-এর শেয়ার কার্ড দেখুনকিওয়ার্ড ডেনসিটি ও পাঠযোগ্যতাশব্দ ও বাক্যাংশ গণনা, ডেনসিটি, পড়ার সময় এবং Flesch পাঠযোগ্যতা স্কোরHTTP স্ট্যাটাস কোডপ্রতিটি HTTP স্ট্যাটাস কোড, এর অর্থ, কখন পাঠাবেন এবং কোন RFC থেকে এসেছেইউজার এজেন্ট পার্সারএকটি ইউজার-এজেন্ট স্ট্রিং পড়ুন: ব্রাউজার, ইঞ্জিন, OS, ডিভাইসের ধরন এবং এটি বট কি নাJSONPath টেস্টারপেস্ট করা JSON-এ RFC 9535 JSONPath কোয়েরি চালান এবং প্রতিটি মিল হাইলাইট করা দেখুন
এই টুলটি কি কাজে লেগেছে?
Omnikit

ছোট ছোট কাজ, আপনার ব্রাউজারেই। বিনামূল্যে, দ্রুত ও ব্যক্তিগত। ফাইল কখনো আপলোড হয় না।

ফাইল

  • Compress Image
  • Image to PDF
  • Merge PDF
  • Compress PDF
  • PDF to Word
  • Word to PDF

ডেভ

  • JSON Formatter & Validator
  • Base64 Encode & Decode
  • JWT Decoder, Verifier & Encoder
  • Password Generator
  • UUID Generator
  • Unix Timestamp Converter

অর্থ

  • SIP Calculator
  • EMI Calculator
  • GST Calculator
  • FD Calculator
  • PPF Calculator
  • Lumpsum Calculator
EnglishالعربيةবাংলাDeutschEspañolFrançaisPolskiPortuguêsРусский
গাইডপ্রশ্নপরিচিতিআমরা কীভাবে যাচাই করিআইন লাইব্রেরি (বেটা)গোপনীয়তাশর্তাবলিপ্রকাশ্য বিবৃতিযোগাযোগMore: Exam practice (UGC NET Paper 1)আপনার ব্রাউজারে চলে। কিছুই আপলোড হয় না। © 2026 Omnikit (theomnikit.com)