Docker Compose مکمل گائیڈ
ہر سروس کے لیے دستی Docker کمانڈز چلانا بند کریں۔
اگر آپ کوئی جدید ایپلی کیشن چلا رہے ہیں، تو غالباً آپ کے پاس ایک frontend، ایک backend، ایک database، اور ایک cache ہوگا۔ ان سب کو ایک ایک کر کے چلانا سست ہے اور اس میں غلطیوں کا امکان زیادہ ہوتا ہے۔
Docker Compose اس مسئلے کو حل کرتا ہے۔ آپ اپنے پورے اسٹیک (stack) کو ایک YAML فائل میں بیان کرتے ہیں اور ایک ہی کمانڈ سے سب کچھ شروع کر دیتے ہیں۔
بنیادی باتیں
- Compose کے بغیر: آپ چار کنٹینرز کے لیے چار الگ الگ کمانڈز چلاتے ہیں۔
- Compose کے ساتھ: آپ "docker compose up" چلاتے ہیں اور سب کچھ شروع ہو جاتا ہے۔
اہم تصورات
• Services: ہر سروس ایک کنٹینر کی نمائندگی کرتی ہے۔ آپ اپنے کوڈ کے لیے "build" یا پہلے سے بنے ہوئے ٹولز جیسے PostgreSQL یا Redis کے لیے "image" استعمال کر سکتے ہیں۔ • Port Mapping: HOST:CONTAINER کا فارمیٹ استعمال کریں۔ یہ آپ کے کمپیوٹر کے پورٹ کو کنٹینر کے پورٹ سے جوڑتا ہے۔ • Environment Variables: سادہ ویلیوز کے لیے "environment" یا سیکرٹس (secrets) کو ایک الگ .env فائل میں رکھنے کے لیے "env_file" استعمال کریں۔ • Volumes: اپنے ڈیٹا کو محفوظ رکھنے کے لیے volumes استعمال کریں۔ Volumes کے بغیر، جب کنٹینر رک جاتا ہے تو آپ کا ڈیٹا بیس ڈیٹا غائب ہو جاتا ہے۔ • Networks: Compose خود بخود ایک نیٹ ورک بنا دیتا ہے۔ کنٹینرز localhost کے بجائے اپنے سروس ناموں (service names) کا استعمال کرتے ہوئے ایک دوسرے سے بات کرتے ہیں۔ • Depends_on: یہ اسٹارٹ اپ کی ترتیب (startup order) طے کرتا ہے۔ یہ Docker کو بتاتا ہے کہ backend سے پہلے database کو شروع کرے۔ یاد رہے کہ یہ database کے مکمل طور پر تیار ہونے کا انتظار نہیں کرتا۔
انٹرویو کے لیے ٹپس
- "build" بمقابلہ "image" کب استعمال کریں؟ اپنی کسٹم ایپلی کیشن کے لیے "build" استعمال کریں۔ Docker Hub سے موجودہ ٹولز کے لیے "image" استعمال کریں۔
- کنٹینرز آپس میں کیسے بات کرتے ہیں؟ وہ Docker نیٹ ورک کے اندر ہوسٹ نیم (hostnames) کے طور پر سروس ناموں کا استعمال کرتے ہیں۔
- ڈیٹا کے نقصان سے کیسے بچیں؟ ڈیٹا بیس کے لیے ہمیشہ named volumes استعمال کریں۔
- سیکرٹس (secrets) کو کیسے سنبھالیں؟ انہیں کبھی بھی کوڈ میں ہارڈ کوڈ (hardcode) نہ کریں۔ ایک .env فائل استعمال کریں۔
عام غلطیاں جن سے بچنا چاہیے
- "latest" ٹیگ کا استعمال: اس سے غیر متوقع اپ ڈیٹس ہو سکتی ہیں۔ مخصوص ورژنز استعمال کریں جیسے "postgres:16"۔
- localhost کا استعمال: کنٹینرز localhost کے ذریعے ایک دوسرے کو نہیں دیکھ سکتے۔ سروس نام استعمال کریں۔
- کوئی healthchecks نہ ہونا: یہ مانیٹر کرنے کے لیے کہ آیا آپ کی سروس واقعی کام کے لیے تیار ہے، healthchecks استعمال کریں۔
ماخذ: https://dev.to/adityaguptareal/docker-compose-complete-guide-1gac