Docker Compose పూర్తి గైడ్

ప్రతి సర్వీస్ కోసం మాన్యువల్‌గా Docker కమాండ్లను రన్ చేయడం ఆపండి.

మీరు ఒక ఆధునిక అప్లికేషన్‌ను నడుపుతుంటే, మీకు ఖచ్చితంగా ఒక frontend, backend, database మరియు cache ఉండవచ్చు. వీటిని ఒక్కొక్కటిగా రన్ చేయడం నెమ్మదిగా ఉంటుంది మరియు తప్పులు జరిగే అవకాశం ఉంది.

Docker Compose దీనిని పరిష్కరిస్తుంది. మీరు మీ మొత్తం స్టాక్‌ను ఒకే 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 కి బదులుగా వాటి సర్వీస్ పేర్లను ఉపయోగించి ఒకదానితో ఒకటి మాట్లాడుకుంటాయి. • Depends_on: ఇది స్టార్టప్ ఆర్డర్‌ను సెట్ చేస్తుంది. బ్యాకెండ్ కంటే ముందు డేటాబేస్‌ను ప్రారంభించమని ఇది Dockerకి చెబుతుంది. అయితే, డేటాబేస్ పూర్తిగా సిద్ధమయ్యే వరకు ఇది వేచి ఉండదని గమనించండి.

ఇంటర్వ్యూ చిట్కాలు

  • build vs image ఎప్పుడు వాడాలి? మీ కస్టమ్ అప్లికేషన్ కోసం "build"ని ఉపయోగించండి. Docker Hub నుండి ఉన్న టూల్స్ కోసం "image"ని ఉపయోగించండి.
  • కంటైనర్లు ఎలా కమ్యూనికేట్ అవుతాయి? అవి Docker నెట్‌వర్క్‌లో హోస్ట్‌నేమ్‌లుగా (hostnames) సర్వీస్ పేర్లను ఉపయోగిస్తాయి.
  • డేటా నష్టాన్ని ఎలా నివారించాలి? డేటాబేస్‌ల కోసం ఎల్లప్పుడూ named volumes ఉపయోగించండి.
  • సీక్రెట్‌లను ఎలా హ్యాండిల్ చేయాలి? వాటిని ఎప్పుడూ కోడ్‌లో నేరుగా (hardcode) రాయకండి. .env ఫైల్‌ను ఉపయోగించండి.

నివారించాల్సిన సాధారణ తప్పులు

  • "latest" ట్యాగ్‌ని ఉపయోగించడం: ఇది ఊహించని అప్‌డేట్‌లకు దారితీస్తుంది. "postgres:16" వంటి నిర్దిష్ట వెర్షన్‌లను ఉపయోగించండి.
  • localhost ఉపయోగించడం: కంటైనర్లు localhost ద్వారా ఒకదానినొకటి చూడలేవు. సర్వీస్ పేరును ఉపయోగించండి.
  • Healthchecks లేకపోవడం: మీ సర్వీస్ నిజంగా పని చేయడానికి సిద్ధంగా ఉందో లేదో పర్యవేక్షించడానికి healthchecks ఉపయోగించండి.

Source: https://dev.to/adityaguptareal/docker-compose-complete-guide-1gac