[ ১০ জিবি সার্ভারে ২ জিবি ডকার ইমেজ? স্পেসের ২০% নষ্ট! Docker Multi-Stage Build এর মাধ্যমে ইমেজ সাইজ কমানো সম্ভব। এটি build tools, dev dependencies সরিয়ে ছোট, secure এবং দ্রুত ইমেজ তৈরি করে। CI/CD pipeline দ্রুততর হয়, resource consumption কমে। Clean ও maintainable Dockerfile তৈরি করে। performance, security, scalability বৃদ্ধি পায়। Docker ব্যবহারকারীদের জন্য এটি "best practice"। ]
ধরুন আপনি একটি হোস্টিং প্ল্যাটফর্মে ১০ জিবি জায়গা বিশিষ্ট একটি সার্ভার কিনেছেন। আপনার অ্যাপ্লিকেশনটি আপনি Docker ব্যবহার করে containerize করেছেন। এখন যখন আপনি Docker image build করলেন, তখন দেখতে পেলেন শুধুমাত্র build করার পরেই ইমেজটি হয়ে গেছে প্রায় ২ জিবি।
ফলাফল? আপনার হোস্টিং স্পেসের প্রায় ২০% জায়গা চলে গেল শুধুমাত্র একটি ইমেজ রাখতেই। এতে আপনার সার্ভারের মূল্যবান স্পেস সীমিত হয়ে পড়ল—যা পারফরম্যান্স এবং অন্যান্য ফাইল/সার্ভিসের জন্য বড় সমস্যা তৈরি করতে পারে।
ডকার ইমেজে build tools, dev dependencies, test ফাইল ইত্যাদি থাকলে ইমেজ অনেক বড় হয়। Multi-stage build ব্যবহারে এগুলো শুধু build stage-এ থাকে, এবং প্রোডাকশন ইমেজে কেবল প্রয়োজনীয় ফাইলগুলোই কপি হয়।
উদাহরণ:
Build stage-এ থাকা debug tools
, source code
, dev dependencies
, .env
ফাইল ইত্যাদি যদি প্রোডাকশন ইমেজে চলে যায়, তাহলে security breach হতে পারে। Multi-stage build এসব ফাইল সরিয়ে clean image তৈরি করে।
ছোট ইমেজ তৈরি হলে তা:
Build process এবং runtime environment আলাদা stage-এ রাখা হলে Dockerfile আরও পরিষ্কার, manage করা সহজ এবং environment-specific customization সহজ হয়।
ছোট ইমেজ মানে:
Docker Multi-Stage Build production-grade অ্যাপ্লিকেশন তৈরির জন্য একটি অত্যন্ত গুরুত্বপূর্ণ টুল। এটি performance, security, scalability এবং maintainability — সব দিক থেকে উপকার দেয়। যারা Docker ব্যবহার করেন, তাদের জন্য এটি এখন “best practice” হয়ে উঠেছে।
Example:
# STAGE - 1
FROM node:18 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
# STAGE - 2
FROM node:18-slim AS production
WORKDIR /app
COPY --from=builder /app /app
RUN npm prune --production
# ENTRYPOINT ["node", "index.js"]
EXPOSE 5000
CMD ["/app/start.sh"]
Posted by Md. Ruhul Amin, 1 month ago
ডকার ইমেজের সাইজ ছোট রাখা অত্যন্ত গুরুত্বপূর্ণ। নির্দিষ্ট ভার্সন ব্যবহার (যেমন `FROM node:18`), `-slim` ব্যবহার করে বেইজ ইমেজের আকার কমানো, `.dockerignore` ফাইল ব্যবহার করে অপ্রয়োজনীয় ফাইল...
1 month ago
Read moreপারফর্মােন্স ও নিরাপত্তা নিশ্চিত করার জন্য ডাটাবেইজ মনিটরিং অত্যন্ত গুরুত্বপূর্ণ। Percona Monitoring and Management (PMM) টুলটি এই কাজে অসাধারণ। বিভিন্ন এনভায়রনমেন্টের (Production, UAT, Testing, Development) ডাটাবেইজ সার্ভারগুলোকে কেন্দ্রীয়...
1 month ago
Read moreমাইক্রোসার্ভিসে কাস্টম ডোমেইন ব্যবহারের সহজ উপায়। Node.js, PHP, Python এ তৈরি Microservice এর জন্য `http://edns.system.com` URL ব্যবহার। `127.0.0.1` এর পরিবর্তে ডোমেইন ব্যবহারে DNS Server ও HOSTS ফাইলের ভূমিকা।...
2 months ago
Read moreপর্ব ১: ইন্টারনেটের ভেতরের গল্প! বিভিন্ন প্রোগ্রামিং ভাষার দল মিলে Network Application তৈরি করে। এই Application এর Architecture ধাপে ধাপে বুঝতে চেষ্টা করবো। Client-Server...
1 month ago
Read more