স্থানীয় উন্নয়নের জন্য ডকার কম্পোজ কীভাবে ব্যবহার করবেন

ডকার কম্পোজ একটি শক্তিশালী টুল যা স্থানীয় উন্নয়নের জন্য মাল্টি-কন্টেইনার ডকার অ্যাপ্লিকেশন সংজ্ঞায়িত এবং চালানোর প্রক্রিয়াটিকে সহজ করে তোলে। এটি আপনাকে একটি একক `docker-compose.yml` ফাইলে আপনার অ্যাপ্লিকেশনের পরিষেবা, নেটওয়ার্ক এবং ভলিউম কনফিগার করতে দেয়, যা আপনাকে একটি একক কমান্ড দিয়ে আপনার

Beginner

ডকার কম্পোজ একটি শক্তিশালী টুল যা স্থানীয় উন্নয়নের জন্য মাল্টি-কন্টেইনার ডকার অ্যাপ্লিকেশন সংজ্ঞায়িত এবং চালানোর প্রক্রিয়াটিকে সহজ করে তোলে। এটি আপনাকে একটি একক docker-compose.yml ফাইলে আপনার অ্যাপ্লিকেশনের পরিষেবা, নেটওয়ার্ক এবং ভলিউম কনফিগার করতে দেয়, যা আপনাকে একটি একক কমান্ড দিয়ে আপনার সম্পূর্ণ উন্নয়ন পরিবেশ চালু করতে সক্ষম করে।

স্থানীয় উন্নয়নের জন্য ডকার কম্পোজ কেন ব্যবহার করবেন?

  • সরলীকৃত সেটআপ: এটি একাধিক নির্ভরতা (যেমন, একটি ওয়েব অ্যাপ, ডেটাবেস এবং ক্যাশিং পরিষেবা) সহ জটিল উন্নয়ন পরিবেশ সেটআপ করার প্রক্রিয়াটিকে সহজ করে তোলে।
  • পুনরাবৃত্তিযোগ্য পরিবেশ: নিশ্চিত করে যে আপনার স্থানীয় পরিবেশ উৎপাদনের সাথে ঘনিষ্ঠভাবে মেলে, "আমার মেশিনে কাজ করে" সমস্যাগুলি হ্রাস করে।
  • নির্ভরতা ব্যবস্থাপনা: আপনার হোস্ট মেশিনে কোনও দ্বন্দ্ব ছাড়াই সহজেই বিভিন্ন সংস্করণের পরিষেবাগুলি (যেমন, ডেটাবেস, মেসেজ কিউ) পরিচালনা করুন।
  • অনবোর্ডিং: নতুন ডেভেলপাররা একটি একক কমান্ড দিয়ে দ্রুত একটি প্রকল্প চালু করতে পারে।

মূল ধারণা

  1. docker-compose.yml (বা compose.yaml): এই YAML ফাইলটি ডকার কম্পোজের কেন্দ্রবিন্দু। এটি আপনার অ্যাপ্লিকেশন গঠনকারী পরিষেবা, নেটওয়ার্ক এবং ভলিউমগুলি সংজ্ঞায়িত করে।
  2. পরিষেবা (Services): আপনার docker-compose.yml এর প্রতিটি পরিষেবা একটি কন্টেইনারের প্রতিনিধিত্ব করে। উদাহরণস্বরূপ, আপনার অ্যাপ্লিকেশনের জন্য একটি web পরিষেবা, আপনার ডেটাবেসের জন্য একটি db পরিষেবা এবং ক্যাশিংয়ের জন্য একটি redis পরিষেবা থাকতে পারে।
  3. নেটওয়ার্ক (Networks): ডকার কম্পোজ ডিফল্টভাবে আপনার অ্যাপ্লিকেশনের জন্য একটি একক নেটওয়ার্ক সেট আপ করে, যা পরিষেবাগুলিকে তাদের পরিষেবা নামগুলিকে হোস্টনাম হিসাবে ব্যবহার করে একে অপরের সাথে যোগাযোগ করতে দেয়।
  4. ভলিউম (Volumes): স্থায়ী ডেটা স্টোরেজের জন্য (যেমন, ডেটাবেস ডেটা) এবং উন্নয়নের সময় লাইভ রিলোড সক্ষম করার জন্য আপনার কন্টেইনারগুলিতে স্থানীয় কোড মাউন্ট করার জন্য ব্যবহৃত হয়।

মৌলিক ওয়ার্কফ্লো এবং কমান্ড

  1. docker-compose.yml এ পরিষেবাগুলি সংজ্ঞায়িত করুন: আপনার প্রকল্পের রুট ডিরেক্টরিতে একটি docker-compose.yml ফাইল তৈরি করুন।

    এখানে একটি Redis ক্যাশের সাথে সংযুক্ত একটি Python Flask ওয়েব অ্যাপ্লিকেশনের জন্য একটি সাধারণ উদাহরণ রয়েছে:

    ```yaml

    docker-compose.yml

    version: '3.8' # Compose ফাইল ফরম্যাটের সংস্করণ নির্দিষ্ট করে services: web: build: . # বর্তমান ডিরেক্টরির Dockerfile থেকে তৈরি করুন ports: - "8000:5000" # হোস্ট পোর্ট 8000 কে কন্টেইনার পোর্ট 5000 এ ম্যাপ করুন volumes: - .:/code # বর্তমান ডিরেক্টরিকে কন্টেইনারের /code ডিরেক্টরিতে মাউন্ট করুন environment: FLASK_ENV: development # পরিবেশ ভেরিয়েবল সেট করুন REDIS_HOST: redis # হোস্টনাম হিসাবে পরিষেবা নাম 'redis' ব্যবহার করুন redis: image: "redis:alpine" # অফিসিয়াল Redis ইমেজ ব্যবহার করুন ports: - "6379:6379" # Redis পোর্ট ম্যাপ করুন volumes: - redis_data:/data # Redis ডেটা স্থায়ী করুন volumes: redis_data: # নামযুক্ত ভলিউম সংজ্ঞায়িত করুন ```

  2. আপনার অ্যাপ্লিকেশন তৈরি এবং চালান: টার্মিনালে আপনার প্রজেক্ট ডিরেক্টরিতে নেভিগেট করুন এবং চালান: bash docker compose up এই কমান্ডটি ইমেজ তৈরি করবে (যদি প্রয়োজন হয়) এবং আপনার docker-compose.yml ফাইলে সংজ্ঞায়িত সমস্ত পরিষেবা চালু করবে।

    পরিষেবাগুলি ব্যাকগ্রাউন্ডে (detached মোডে) চালানোর জন্য, ব্যবহার করুন: bash docker compose up -d

  3. পরিষেবাগুলি বন্ধ এবং সরান: আপনি উন্নয়ন শেষ করার পরে, Compose দ্বারা তৈরি সমস্ত কন্টেইনার, নেটওয়ার্ক এবং ভলিউম বন্ধ এবং সরান: bash docker compose down নামযুক্ত ভলিউমগুলি সরাতে docker compose down -v ব্যবহার করুন (এটি স্থায়ী ডেটা মুছে ফেলবে)।

  4. লগ দেখুন: আপনার চলমান পরিষেবাগুলির লগ দেখতে: bash docker compose logs [service_name] # উদাহরণ: docker compose logs web # রিয়েল-টাইমে লগ অনুসরণ করতে -f ব্যবহার করুন: # docker compose logs -f web

  5. একটি পরিষেবাতে কমান্ড চালান: আপনি exec ব্যবহার করে একটি চলমান কন্টেইনারের ভিতরে কমান্ড চালাতে পারেন: bash docker compose exec web bash # এটি 'web' পরিষেবা কন্টেইনারের ভিতরে একটি bash শেল খুলবে।

স্থানীয় উন্নয়নের জন্য সেরা অনুশীলন

  • লাইভ রিলোডের জন্য ভলিউম মাউন্টিং: আপনার স্থানীয় কোড ডিরেক্টরি কন্টেইনারে মাউন্ট করুন (volumes: - .:/code) যাতে কোড পরিবর্তনগুলি ইমেজ পুনরায় তৈরি না করেই তাৎক্ষণিকভাবে প্রতিফলিত হয়।
  • পরিবেশ ভেরিয়েবল: পরিবেশ-নির্দিষ্ট ভেরিয়েবল (যেমন API কী বা ডেটাবেস শংসাপত্র) পরিচালনা করতে .env ফাইলগুলি ব্যবহার করুন এবং সেগুলিকে আপনার docker-compose.yml ফাইল এবং সংস্করণ নিয়ন্ত্রণ থেকে দূরে রাখুন।
  • স্বাস্থ্য পরীক্ষা: নির্ভর পরিষেবাগুলি শুরু হওয়ার আগে প্রস্তুত রয়েছে তা নিশ্চিত করতে আপনার docker-compose.yml এ স্বাস্থ্য পরীক্ষা প্রয়োগ করুন।
  • হালকা ইমেজ: ইমেজগুলির আকার ছোট রাখতে ন্যূনতম বেস ইমেজ (যেমন Alpine ভেরিয়েন্ট) এবং মাল্টি-স্টেজ বিল্ড ব্যবহার করুন।

এই পদক্ষেপগুলি অনুসরণ করে, আপনি আপনার মাল্টি-কন্টেইনার অ্যাপ্লিকেশনগুলির জন্য সামঞ্জস্যপূর্ণ, বিচ্ছিন্ন এবং সহজেই পরিচালনাযোগ্য স্থানীয় উন্নয়ন পরিবেশ তৈরি করতে ডকার কম্পোজের কার্যকরভাবে সুবিধা নিতে পারেন।