Skip to content

Docker BuildKit ⚡

ডকার ইমেজের বিল্ড প্রসেসকে আরও দ্রুত, সিকিউর এবং স্মার্ট করার জন্য আধুনিক বিল্ড ইঞ্জিন হলো BuildKit। ডকার ভার্সন ১৮.০৯ থেকে এটি যুক্ত করা হয়েছে এবং বর্তমানে এটিই ডকারের ডিফল্ট বিল্ড ইঞ্জিন।


১. BuildKit কি?

BuildKit হলো ডকারের নেক্সট-জেনারেশন বিল্ড টুলকিট। এটি পুরনো বিল্ডারের তুলনায় অনেক বেশি পারফরম্যান্স এবং অ্যাডভান্সড ফিচার প্রদান করে।


২. কেন BuildKit ব্যবহার করবেন? (Key Features)

ক. সমান্তরাল বিল্ড (Parallel Builds)

পুরনো বিল্ডার প্রতিটি লেয়ার একটার পর একটা বিল্ড করতো। BuildKit যে লেয়ারগুলো একে অপরের উপর নির্ভরশীল নয়, সেগুলো একই সাথে (Parallel) বিল্ড করতে পারে। এর ফলে বিল্ড টাইম অনেক কমে যায়।

খ. বিল্ড সিক্রেটস (Build Secrets)

ইমেজ বিল্ড করার সময় অনেক সময় এসএসএইচ ৪কি (SSH Keys) বা এপিআই টোকেন প্রয়োজন হয়। BuildKit-এর মাধ্যমে আপনি সেনসিটিভ ডেটা কোনো লেয়ারে স্টোর না করেই মাউন্ট করে ব্যবহার করতে পারেন।

dockerfile
RUN --mount=type=secret,id=my_secret \
    export TOKEN=$(cat /run/secrets/my_secret) && ./build_script.sh

গ. এসএসএইচ ফরোয়ার্ডিং (SSH Forwarding)

প্রাইভেট গিট রিপোজিটরি থেকে কোড ক্লোন করার জন্য হোস্ট মেশিনের SSH এজেন্ট ব্যবহার করা যায়।

dockerfile
RUN --mount=type=ssh git clone git@github.com:user/private-repo.git

ঘ. উন্নত ক্যাশিং (Advanced Caching)

BuildKit-এর ক্যাশ ম্যানেজমেন্ট অনেক বেশি স্মার্ট। এটি রিমোট ক্যাশ ব্যাকএন্ড (যেমন: ইমাজ রেজিস্ট্রি) সাপোর্ট করে।


৩. BuildKit এনাবল করা (Enabling BuildKit)

যদি আপনার ডকার ভার্সন পুরনো হয় এবং BuildKit ডিফল্ট না থাকে, তবে নিচের মতো করে এনাবল করতে পারেন:

কমান্ড লাইন থেকে:

bash
DOCKER_BUILDKIT=1 docker build -t my-app .

স্থায়ীভাবে ডিফল্ট করা (/etc/docker/daemon.json ফাইলে):

json
{
  "features": {
    "buildkit": true
  }
}

৪. BuildKit-এর আউটপুট (Output)

BuildKit-এর আউটপুট সাধারণ বিল্ডারের চেয়ে দেখতে আলাদা এবং এটি ইন্টারঅ্যাক্টিভ। প্রতিটি ধাপের প্রোগ্রেস এবং টাইম এখানে স্পষ্টভাবে দেখা যায়।


সারসংক্ষেপ (Summary)

আধুনিক কন্টেইনারাইজেশনের জন্য BuildKit ব্যবহার করা অপরিহার্য। এটি আপনার CI/CD পাইপলাইনকে দ্রুত করে এবং বিল্ড প্রসেসকে আরও সিকিউর ও এফিশিয়েন্ট করে তোলে।


TIP

মাল্টি-স্টেজ বিল্ডের সাথে BuildKit ব্যবহার করলে আপনি সর্বোচ্চ পারফরম্যান্স পাবেন, কারণ এটি অবিন্যল (Unused) স্টেজগুলোকে স্কিপ করতে পারে।

Released under the MIT License.