स्थानीय विकास के लिए डॉकर कंपोज़ का उपयोग कैसे करें

डॉकर कंपोज़ एक शक्तिशाली उपकरण है जो स्थानीय विकास के लिए मल्टी-कंटेनर डॉकर एप्लिकेशन को परिभाषित करने और चलाने की प्रक्रिया को सरल बनाता है। यह आपको एक ही `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 फ़ाइल में परिभाषित सभी सेवाओं को बनाएगा (यदि आवश्यक हो) और शुरू करेगा।

    पृष्ठभूमि में सेवाओं को चलाने के लिए (अलग मोड), उपयोग करें: 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' सेवा कंटेनर के अंदर एक बैश शेल खोलेगा।

स्थानीय विकास के लिए सर्वोत्तम प्रथाएँ

  • लाइव रीलोड के लिए वॉल्यूम माउंटिंग: अपनी स्थानीय कोड निर्देशिका को कंटेनर में माउंट करें (volumes: - .:/code) ताकि कोड परिवर्तन इमेज को फिर से बनाए बिना तुरंत दिखाई दें।
  • पर्यावरण चर: पर्यावरण-विशिष्ट चर (जैसे API कुंजी या डेटाबेस क्रेडेंशियल) प्रबंधित करने के लिए .env फ़ाइलों का उपयोग करें और उन्हें अपनी docker-compose.yml फ़ाइल और संस्करण नियंत्रण से बाहर रखें।
  • स्वास्थ्य जांच: निर्भर सेवाओं के शुरू होने से पहले सेवाएँ तैयार हैं यह सुनिश्चित करने के लिए अपनी docker-compose.yml में स्वास्थ्य जांच लागू करें।
  • हल्के इमेज: इमेज के आकार को छोटा रखने के लिए न्यूनतम बेस इमेज (जैसे अल्पाइन वेरिएंट) और मल्टी-स्टेज बिल्ड का उपयोग करें।

इन चरणों का पालन करके, आप मल्टी-कंटेनर एप्लिकेशन के लिए सुसंगत, पृथक और आसानी से प्रबंधनीय स्थानीय विकास वातावरण बनाने के लिए डॉकर कंपोज़ का प्रभावी ढंग से लाभ उठा सकते हैं।