“আমার মেশিনে তো চলছিল”—এই বাক্যটা যতবার শুনেছি, ডকার সম্পর্কে ততবার serious হয়েছি।
সমস্যাটা কোথায়?
নতুন ওয়েব প্রোজেক্ট শুরু করলে প্রথম কাজ: লোকাল এনভায়রনমেন্ট। PHP হোক বা অন্য কিছু—রানটাইম, এক্সটেনশন, ওয়েব সার্ভার, ডাটাবেস, ভার্সন—সব মিলিয়ে একটা জিনিস বানাতে হয়। অনেকে XAMPP দিয়ে দ্রুত শুরু করে; সমস্যা নেই।
কিন্তু একটু mature প্রোজেক্টে গেলে দেখা যায়: অতিরিক্ত এক্সটেনশন, Apache-তে কাস্টম কনফিগ, নির্দিষ্ট PHP ভার্সন। পিসি ক্রাশ করলে বা নতুন মেশিনে গেলে আবার শুরু। রিমোট সার্ভার বদলালেও একই গল্প।
আরেকটা ক্লাসিক সিন: বস বা সিনিয়রকে রিভিউয়ের জন্য প্রোজেক্ট দিলে—তার মেশিনে অন্য PHP, অন্য স্ট্যাক। তোমার ল্যাপটপে সব ঠিক, তারটায় error parade।
তখন মনে হয়: যদি সোর্সের সাথে সেই এনভায়রনমেন্টটাই প্যাক করা যেত—যেন চালু করলেই একই স্ট্যাক উঠে আসে?
ডকার মোটামুটি কী করছে?
ডকার লিনাক্স কনটেইনার টেকনোলজির ওপর দাঁড়িয়ে অ্যাপ্লিকেশন লেয়ারকে হোস্ট মেশিন থেকে আলাদা করে। একই Dockerfile (বা ইমেজ) উইন্ডোজ, লিনাক্স, ম্যাক—যেখানে ডকার চলে সেখানে একই রকম চালানো যায়।
জাভার সাথে তুলনা করা হয়: JVM একবার কম্পাইল, অনেক প্ল্যাটফর্মে রান। ডকারের কথা হলো: এনভায়রনমেন্ট + ডিপেন্ডেন্সি একবার বর্ণনা করো, তারপর যে মেশিনেই হোক—docker build / docker run দিয়ে একই জিনিস পাওয়া।
Dockerfile-এ যা লিখা, ডকার হাব/রেজিস্ট্রি থেকে লেয়ার টেনে সেটা বানায়; পুরো স্ট্যাক হোস্টে “ইন্সটল” না করেও চালানো যায় (ডকার ইঞ্জিন ছাড়া)। ভলিউম দিয়ে ডাটা ধরে রাখা যায়।
হস্তান্তর সহজ: সোর্স + Dockerfile দিলেই; সামনের মানুষের শুধু ডকার আর নেট লাগে—আলাদা করে এক্সটেনশন হান্ট করতে হয় না।
আমার এক লাইনে
ডকার = “এই প্রোজেক্টটা এভাবেই চলবে”—কথাটা কোডের পাশে বন্ধনীতে লেখা।
পরের পর্বে ওয়েব ডেভ এনভায়রনমেন্ট (PHP, Oracle ইত্যাদি) ডকার দিয়ে কীভাবে গুছানো যায়—সেটা নিয়ে লিখেছি: /blog/web-development-docker-php-oracle-part-2-1।
