Multi-stage builds হল Docker-এর একটি শক্তিশালী ফিচার যা Dockerfile-এর বিভিন্ন অংশকে আলাদা স্টেজে বিভক্ত করে। এই পদ্ধতিতে, একটি ইমেজের একটি স্টেজ থেকে অন্য স্টেজে আউটপুট স্থানান্তর করা হয়, ফলে ইমেজের আকার ছোট এবং নির্মাণের প্রক্রিয়া আরো কার্যকর হয়। নিচে Multi-stage build এবং Dockerfile optimization এর উপর বিস্তারিত আলোচনা করা হলো।
Multi-stage builds এর প্রধান উদ্দেশ্য হল Docker Image-এর আকার কমানো এবং নির্মাণ প্রক্রিয়ার দক্ষতা বাড়ানো।
বিভিন্ন স্টেজ: একটি Dockerfile-এ একাধিক FROM
নির্দেশনা ব্যবহার করে বিভিন্ন স্টেজ তৈরি করা যায়। প্রতিটি স্টেজ তার নিজস্ব বেস ইমেজ ব্যবহার করতে পারে।
নির্ভরশীলতা ইনস্টলেশন: প্রথম স্টেজে সমস্ত নির্ভরশীলতা ইনস্টল করা হয় এবং অ্যাপ্লিকেশন নির্মাণ করা হয়।
আউটপুট স্থানান্তর: দ্বিতীয় স্টেজে শুধুমাত্র প্রয়োজনীয় ফাইলগুলি স্থানান্তর করা হয়, যেমন সংকলিত বাইনরি বা কনফিগারেশন ফাইল।
নিচে একটি Multi-stage Dockerfile এর উদাহরণ দেওয়া হলো:
# প্রথম স্টেজ: বিল্ডিং
FROM golang:1.17 AS builder
WORKDIR /app
COPY . .
# অ্যাপ্লিকেশন বিল্ড করুন
RUN go build -o myapp .
# দ্বিতীয় স্টেজ: প্রযোজ্য ইমেজ তৈরি
FROM alpine:latest
WORKDIR /root/
COPY --from=builder /app/myapp .
# কনটেইনার চালানোর জন্য কমান্ড
CMD ["./myapp"]
Dockerfile-কে অপ্টিমাইজ করার জন্য কয়েকটি গুরুত্বপূর্ণ পদ্ধতি আছে, যা ইমেজের আকার এবং নির্মাণের সময় কমাতে সহায়ক।
RUN
, COPY
, এবং ADD
নির্দেশনা একটি নতুন লেয়ার তৈরি করে। লেয়ার সংখ্যা কমানোর চেষ্টা করুন।RUN
কমান্ডে একত্রিত করুন।RUN apt-get update && apt-get install -y package1 package2
COPY
এবং RUN
কমান্ডের আদেশ।.dockerignore
ফাইল ব্যবহার করে অপ্রয়োজনীয় ফাইলগুলোকে বাদ দিন।# .dockerignore
node_modules
*.log
temp/
alpine
ইমেজ ব্যবহার করা যা সাধারণত ছোট এবং দ্রুত।CMD
বা ENTRYPOINT
ব্যবহার করেন, তখন একটি কমান্ডের ভিতরে সমস্ত আর্গুমেন্টগুলি অন্তর্ভুক্ত করুন।CMD ["executable", "param1", "param2"]
Multi-stage builds Dockerfile-এর শক্তিশালী ফিচার যা ইমেজের আকার কমাতে এবং নির্মাণের কার্যকারিতা বাড়াতে সাহায্য করে। Dockerfile অপ্টিমাইজেশন বিভিন্ন পদ্ধতির মাধ্যমে করা যেতে পারে, যেমন লেয়ার সংখ্যা কমানো, ক্যাশে ব্যবহারের সুবিধা নেওয়া, এবং প্রয়োজনীয় ফাইল কপি করা। এই সমস্ত পদ্ধতি Docker ইমেজ তৈরি করার সময় কর্মক্ষমতা এবং কার্যকারিতা উন্নত করতে সহায়ক।
আরও দেখুন...