Docker Compose Complete Guide
हर सर्विस के लिए मैन्युअल Docker कमांड चलाना बंद करें।
यदि आप एक आधुनिक एप्लिकेशन चलाते हैं, तो आपके पास संभवतः एक frontend, एक backend, एक database और एक cache होगा। इन्हें एक-एक करके चलाना धीमा है और इसमें गलतियों की संभावना अधिक होती है।
Docker Compose इसे हल करता है। आप अपने पूरे स्टैक को एक YAML फ़ाइल में परिभाषित करते हैं और एक ही कमांड से सब कुछ शुरू कर देते हैं।
बुनियादी बातें (The Basics)
- Compose के बिना: आप चार कंटेनरों के लिए चार अलग-अलग कमांड चलाते हैं।
- Compose के साथ: आप "docker compose up" चलाते हैं और सब कुछ शुरू हो जाता है।
महत्वपूर्ण अवधारणाएं (Important Concepts)
• Services: प्रत्येक सर्विस एक कंटेनर का प्रतिनिधित्व करती है। आप अपने स्वयं के कोड के लिए "build" का उपयोग कर सकते हैं या PostgreSQL या Redis जैसे पहले से बने (pre-built) टूल्स के लिए "image" का उपयोग कर सकते हैं। • Port Mapping: HOST:CONTAINER फॉर्मेट का उपयोग करें। यह आपके कंप्यूटर पोर्ट को कंटेनर पोर्ट से मैप करता है। • Environment Variables: सरल वैल्यूज़ के लिए "environment" का उपयोग करें या सीक्रेट्स (secrets) को एक अलग .env फ़ाइल में रखने के लिए "env_file" का उपयोग करें। • Volumes: अपने डेटा को सुरक्षित रखने के लिए volumes का उपयोग करें। Volumes के बिना, कंटेनर रुकने पर आपका डेटाबेस डेटा गायब हो जाता है। • Networks: Compose स्वचालित रूप से एक नेटवर्क बनाता है। कंटेनर localhost के बजाय अपने सर्विस नामों का उपयोग करके एक-दूसरे से बात करते हैं। • Depends_on: यह स्टार्टअप ऑर्डर सेट करता है। यह Docker को बताता है कि backend से पहले database को शुरू करें। ध्यान दें कि यह database के पूरी तरह से तैयार होने का इंतज़ार नहीं करता है।
इंटरव्यू टिप्स (Interview Tips)
- build बनाम image का उपयोग कब करें? अपने कस्टम एप्लिकेशन के लिए "build" का उपयोग करें। Docker Hub से मौजूदा टूल्स के लिए "image" का उपयोग करें।
- कंटेनर आपस में कैसे संवाद करते हैं? वे Docker नेटवर्क के भीतर होस्टनाम के रूप में सर्विस नामों का उपयोग करते हैं।
- डेटा हानि से कैसे बचें? डेटाबेस के लिए हमेशा named volumes का उपयोग करें।
- सीक्रेट्स (secrets) को कैसे संभालें? उन्हें कभी भी हार्डकोड न करें। एक .env फ़ाइल का उपयोग करें।
सामान्य गलतियाँ जिनसे बचना चाहिए (Common Mistakes to Avoid)
- "latest" टैग का उपयोग करना: इससे अप्रत्याशित अपडेट हो सकते हैं। "postgres:16" जैसे विशिष्ट वर्ज़न का उपयोग करें।
- localhost का उपयोग करना: कंटेनर localhost के माध्यम से एक-दूसरे को नहीं देख सकते। सर्विस नाम का उपयोग करें।
- No healthchecks: यह मॉनिटर करने के लिए healthchecks का उपयोग करें कि क्या आपकी सर्विस वास्तव में काम करने के लिए तैयार है।
Source: https://dev.to/adityaguptareal/docker-compose-complete-guide-1gac