Docker Compose முழுமையான வழிகாட்டி

ஒவ்வொரு சேவைக்கும் (service) தனித்தனியாக Docker கட்டளைகளை (commands) இயக்குவதை நிறுத்துங்கள்.

நீங்கள் ஒரு நவீன செயலியை (application) இயக்குகிறீர்கள் என்றால், அதில் பெரும்பாலும் ஒரு frontend, ஒரு backend, ஒரு database மற்றும் ஒரு cache இருக்கும். இவற்றை ஒவ்வொன்றாக இயக்குவது மெதுவானது மற்றும் பிழைகள் ஏற்பட வாய்ப்புள்ளது.

Docker Compose இதைத் தீர்க்கிறது. உங்கள் முழுமையான stack-ஐயும் ஒரே YAML கோப்பில் வரையறுத்து, ஒரே கட்டளை மூலம் அனைத்தையும் தொடங்கலாம்.

அடிப்படை விஷயங்கள்

  • Compose இல்லாமல்: நான்கு containers-களுக்கு நான்கு தனித்தனி கட்டளைகளை இயக்க வேண்டும்.
  • Compose உடன்: "docker compose up" என்று இயக்கினால் அனைத்தும் தொடங்கிவிடும்.

முக்கியமான கருத்துக்கள்

• Services: ஒவ்வொரு service-ம் ஒரு container-ஐக் குறிக்கிறது. உங்கள் சொந்தக் குறியீட்டிற்கு (code) "build" என்பதையும், PostgreSQL அல்லது Redis போன்ற ஏற்கனவே உருவாக்கப்பட்ட கருவிகளுக்கு (pre-built tools) "image" என்பதையும் பயன்படுத்தலாம். • Port Mapping: HOST:CONTAINER என்ற வடிவத்தைப் பயன்படுத்தவும். இது உங்கள் கணினியின் port-ஐ container port-உடன் இணைக்கிறது. • Environment Variables: எளிய மதிப்புகளுக்கு "environment" என்பதையும், ரகசியத் தகவல்களை (secrets) ஒரு தனி .env கோப்பில் வைக்க "env_file" என்பதையும் பயன்படுத்தவும். • Volumes: உங்கள் தரவை (data) பாதுகாப்பாக வைத்திருக்க volumes-களைப் பயன்படுத்தவும். Volumes இல்லையென்றால், container நிறுத்தப்படும்போது உங்கள் database தரவு அழிந்துவிடும். • Networks: Compose தானாகவே ஒரு network-ஐ உருவாக்குகிறது. Containers ஒன்றோடொன்று தொடர்புகொள்ள localhost-க்கு பதிலாக அவற்றின் service பெயர்களைப் பயன்படுத்துகின்றன. • Depends_on: இது தொடக்க வரிசையை (startup order) அமைக்கிறது. backend-க்கு முன்னதாக database-ஐத் தொடங்குமாறு இது Docker-இடம் கூறுகிறது. ஆனால், database முழுமையாகத் தயாராகும் வரை இது காத்திருக்காது என்பதைக் கவனத்தில் கொள்ளவும்.

நேர்காணல் குறிப்புகள்

  • build மற்றும் image எப்போது பயன்படுத்த வேண்டும்? உங்கள் தனிப்பயன் பயன்பாட்டிற்கு (custom application) "build" என்பதைப் பயன்படுத்தவும். Docker Hub-ல் உள்ள ஏற்கனவே உள்ள கருவிகளுக்கு "image" என்பதைப் பயன்படுத்தவும்.
  • Containers எவ்வாறு தொடர்புகொள்கின்றன? அவை Docker network-க்குள் service பெயர்களை hostnames ஆகப் பயன்படுத்துகின்றன.
  • தரவு இழப்பை எவ்வாறு தவிர்ப்பது? Database-களுக்கு எப்போதும் named volumes-களைப் பயன்படுத்தவும்.
  • ரகசியத் தகவல்களை (secrets) எவ்வாறு கையாள்வது? அவற்றை ஒருபோதும் hardcode செய்ய வேண்டாம். ஒரு .env கோப்பைப் பயன்படுத்தவும்.

தவிர்க்க வேண்டிய பொதுவான தவறுகள்

  • "latest" tag-ஐப் பயன்படுத்துதல்: இது எதிர்பாராத அப்டேட்களை (updates) ஏற்படுத்தும். "postgres:16" போன்ற குறிப்பிட்ட பதிப்புகளைப் (versions) பயன்படுத்தவும்.
  • localhost-ஐப் பயன்படுத்துதல்: Containers-களால் localhost மூலம் ஒன்றையொன்று பார்க்க முடியாது. service பெயரைப் பயன்படுத்தவும்.
  • Healthchecks இல்லாமை: உங்கள் service உண்மையில் வேலை செய்யத் தயாராக உள்ளதா என்பதைக் கண்காணிக்க healthchecks-களைப் பயன்படுத்தவும்.

மூலம்: https://dev.to/adityaguptareal/docker-compose-complete-guide-1gac