Skip to content

Building Docker Images: ইমেজ তৈরির কলাকৌশল 🛠️

Dockerfile লেখার পর আমাদের কাজ হলো সেই ফাইলটিকে একটি ব্যবহারযোগ্য ইমেজে রূপান্তর করা। এর জন্য আমরা docker build কমান্ড ব্যবহার করি। এই গাইডে আমরা বিল্ড প্রসেসের বিভিন্ন ফ্ল্যাগ এবং ইমেজ ট্যাগিং সম্পর্কে বিস্তারিত জানবো।


১. বেসিক বিল্ড কমান্ড

সবচেয়ে সহজ বিল্ড কমান্ড হলো:

bash
docker build -t myapp:v1 .
  • -t (Tag): ইমেজের একটি নাম এবং ভার্সন (ট্যাগ) দেওয়ার জন্য।
  • . (Dot): এটি নির্দেশ করে যে Dockerfile এবং প্রয়োজনীয় ফাইলগুলো বর্তমান ডিরেক্টরিতে আছে।

২. কাস্টম Dockerfile ব্যবহার করা

যদি আপনার ফাইলটির নাম ডিফল্ট Dockerfile না হয়ে অন্য কিছু হয় (যেমন: Dockerfile.prod), তবে -f ফ্ল্যাগ ব্যবহার করতে হয়:

bash
docker build -t myapp:v1 -f Dockerfile.prod .

এটি সাধারণত ডেভেলপমেন্ট এবং প্রোডাকশন এনভায়রনমেন্ট আলাদা রাখার জন্য ব্যবহৃত হয়।


৩. Force Rebuild (No-cache)

ডকার সাধারণত আগের বিল্ডের লেয়ারগুলো ক্যাশ (Cache) থেকে ব্যবহার করে যাতে বিল্ড দ্রুত হয়। কিন্তু কখনো কখনো আপনি একদম শুরু থেকে ফ্রেশ বিল্ড করতে চান (যেমন: যদি কোনো সিকিউরিটি প্যাচ ইন্সটল করতে হয়)। তখন --no-cache ব্যবহার করুন:

bash
docker build --no-cache -t myapp:v1 .

৪. বিল্ড-টাইম ভেরিয়েবল (Build Arguments)

Dockerfile-এ থাকা ARG ইন্সট্রাকশনের ভ্যালু বিল্ড করার সময় বাইরে থেকে পাস করতে চাইলে --build-arg ব্যবহার করা হয়:

bash
docker build --build-arg VERSION=2.0 -t myapp:v1 .

এটি ইমেজকে ডাইনামিক করতে সাহায্য করে।


৫. ইমেজ ট্যাগিং (Docker Tag)

একটি তৈরি করা ইমেজকে নতুন নাম বা ট্যাগ দিতে docker tag ব্যবহার করা হয়। এটি সাধারণত ইমেজ পুশ করার আগে প্রয়োজন হয়।

bash
docker tag myapp:v1 myapp:latest

এখানে myapp:v1-কে নতুন নাম myapp:latest দেওয়া হয়েছে। এটি নতুন কোনো কপি তৈরি করে না, বরং একই ইমেজের একটি নতুন লেবেল যোগ করে।


বিল্ড কমান্ড সামারি টেবিল

TaskCommand
Simple Builddocker build -t name .
Custom Filedocker build -f <file> -t name .
Skip Cachedocker build --no-cache -t name .
Build Argsdocker build --build-arg KEY=VAL -t name .
Tag Imagedocker tag source target

IMPORTANT

বিল্ড করার সময় সবসময় চেষ্টা করবেন অপ্রয়োজনীয় ফাইল .dockerignore-এ রাখতে, যাতে বিল্ড কন্টেক্সট ছোট থাকে এবং বিল্ড দ্রুত হয়।

Released under the MIT License.