യൂണിറ്റുകൾ
1. DevOps, Cloud AI എന്നിവയിലേക്കുള്ള ആമുഖം: റോളുകൾ, അതിരുകൾ, ആധികാരികത, സുരക്ഷ, രഹസ്യങ്ങൾ 2. ആർട്ടിഫിഷ്യൽ ഇൻ്റലിജൻസ് ഉപയോഗിച്ച് സിഐ/സിഡി പൈപ്പ്ലൈനുകൾ രൂപകൽപ്പന ചെയ്യുന്നു: GitHub ആക്ഷൻസ്, GitLab CI 3. അടിസ്ഥാന സൗകര്യങ്ങൾ കോഡായി കൈകാര്യം ചെയ്യുക: ടെറാഫോമും ഐഎസിയും ഉള്ള ആർട്ടിഫിഷ്യൽ ഇൻ്റലിജൻസ് 4. കണ്ടെയ്‌നറൈസേഷൻ: ആർട്ടിഫിഷ്യൽ ഇൻ്റലിജൻസ് ഉപയോഗിച്ചുള്ള ഡോക്കർഫയലും ഇമേജ് ഒപ്റ്റിമൈസേഷനും 5. കുബർനെറ്റസ്: മാനിഫെസ്റ്റ്, ഹെൽം, AI- പവർഡ് ഓർക്കസ്ട്രേഷൻ 6. നിരീക്ഷണവും നിരീക്ഷണവും: മെട്രിക്, ലോഗ്, ട്രേസ്, അലാറം നിയമങ്ങൾ 7. സംഭവ മാനേജ്മെൻ്റ് ആൻഡ് പോസ്റ്റ്മോർട്ടം: കൃത്രിമ ബുദ്ധി ഉപയോഗിച്ച് മൂലകാരണ വിശകലനം 8. ക്ലൗഡ് കോസ്റ്റ് ഒപ്റ്റിമൈസേഷൻ (ഫിൻഓപ്‌സ്): കൃത്രിമ ബുദ്ധി ഉപയോഗിച്ച് മാലിന്യങ്ങൾക്കായി വേട്ടയാടൽ 9. സ്ക്രിപ്റ്റും ഓട്ടോമേഷൻ ജനറേഷനും: ബാഷ്, പൈത്തൺ, പവർഷെൽ 10. സെക്യൂരിറ്റി ആൻഡ് സീക്രട്ട്സ് മാനേജ്മെൻ്റ്: DevSecOps ആൻഡ് ആർട്ടിഫിഷ്യൽ ഇൻ്റലിജൻസ് 11. ഉൽപ്പന്ന പരിശോധന, റിലീസ് സ്ട്രാറ്റജികൾ, എൻഡ്-ടു-എൻഡ് AI വർക്ക്ഫ്ലോ
യൂണിറ്റ് 4 / 11

കണ്ടെയ്‌നറൈസേഷൻ: ആർട്ടിഫിഷ്യൽ ഇൻ്റലിജൻസ് ഉപയോഗിച്ചുള്ള ഡോക്കർഫയലും ഇമേജ് ഒപ്റ്റിമൈസേഷനും

നേട്ടങ്ങൾ:

  • കണ്ടെയ്‌നർ, ഡോക്കർഫയൽ ആശയങ്ങൾ, അടിസ്ഥാന നിർദ്ദേശങ്ങൾ, ലെയർ ലോജിക് എന്നിവ മനസ്സിലാക്കാനുള്ള കഴിവ്, കൂടാതെ ആർട്ടിഫിഷ്യൽ ഇൻ്റലിജൻസ് പ്രൊഡക്ഷൻ-റെഡി ഡോക്കർഫൈൽ നിർമ്മിക്കാനുള്ള കഴിവ്
  • മൾട്ടി-സ്റ്റേജ് ബിൽഡ്, ചെറിയ അടിസ്ഥാന ഇമേജ് എന്നിവ ഉപയോഗിച്ച് ചിത്രത്തിൻ്റെ വലുപ്പം കുറയ്ക്കാനും വിന്യാസ വേഗതയും സുരക്ഷയും വർദ്ധിപ്പിക്കാനുമുള്ള കഴിവ്
  • ചിത്രത്തിൽ രഹസ്യം ഉൾച്ചേർക്കാതിരിക്കുക, റൂട്ടിന് പകരം അനധികൃത ഉപയോക്താവിനെ ഉപയോഗിച്ച് പ്രവർത്തിപ്പിക്കുക, ചിത്രം സ്കാൻ ചെയ്യുക തുടങ്ങിയ സുരക്ഷാ തത്വങ്ങൾ പ്രയോഗിക്കാനുള്ള കഴിവ്

"ഇത് എൻ്റെ കമ്പ്യൂട്ടറിൽ പ്രവർത്തിക്കുന്നു" എന്ന വാചകം സോഫ്‌റ്റ്‌വെയറിൻ്റെ ചരിത്രത്തിലെ ഏറ്റവും ചെലവേറിയ വാക്യമാണ്. വ്യത്യസ്ത ലൈബ്രറി പതിപ്പ് കാരണം ഒരേ കോഡ് മറ്റൊരു സെർവറിൽ പൊട്ടിത്തെറിക്കുന്നു. കണ്ടെയ്‌നർ സാങ്കേതികവിദ്യ ഈ പ്രശ്‌നം കൃത്യമായി പരിഹരിക്കുന്നു: ലൈബ്രറികൾ, റൺടൈം, ക്രമീകരണങ്ങൾ - പ്രവർത്തിപ്പിക്കാനാവശ്യമായ എല്ലാം സഹിതം ഇത് നിങ്ങളുടെ ആപ്ലിക്കേഷനെ ഒരൊറ്റ പോർട്ടബിൾ പാക്കേജിൽ ഇടുന്നു. ഈ പാക്കേജ് എല്ലായിടത്തും ഒരേപോലെ പ്രവർത്തിക്കുന്നു. ഏറ്റവും സാധാരണമായ കണ്ടെയ്നർ ഉപകരണം ഡോക്കർ ആണ്.

ഒരു കണ്ടെയ്‌നറിൻ്റെ വിവരണത്തെ ഡോക്കർഫിൽ എന്ന് വിളിക്കുന്നു: ഏത് അടിസ്ഥാന ഇമേജിൽ നിന്നാണ് നിങ്ങളുടെ ആപ്ലിക്കേഷൻ ആരംഭിക്കേണ്ടത്, ഏതൊക്കെ ഫയലുകൾ പകർത്തും, ഏതൊക്കെ കമാൻഡുകൾ പ്രവർത്തിക്കും എന്ന് വിശദീകരിക്കുന്ന ഒരു ടെക്സ്റ്റ് ഫയലാണിത്. ഈ പാചകക്കുറിപ്പിൽ നിന്ന് ഒരു ചിത്രം നിർമ്മിക്കുന്നു; ചിത്രം പ്രവർത്തിപ്പിക്കുമ്പോൾ, അത് ഒരു കണ്ടെയ്നറായി മാറുന്നു. ഒരു ഡോക്കർഫയൽ എഴുതുന്നതിലും - അതിലും പ്രധാനമായി - അത് ചെറുതാക്കുന്നതിലും സുരക്ഷിതമാക്കുന്നതിലും AI വളരെ വൈദഗ്ധ്യമുള്ളതാണ്. എന്നാൽ ജനറേറ്റ് ചെയ്ത പാചകക്കുറിപ്പ് എന്താണ് ചെയ്യുന്നതെന്നും അത് എവിടെ നിന്ന് രഹസ്യങ്ങൾ ചോർത്താമെന്നും മനസ്സിലാക്കേണ്ടത് നിങ്ങളുടെ ജോലിയാണ്.

Dockerfile-ൻ്റെ അടിസ്ഥാന നിർദ്ദേശങ്ങൾ

ഒരു ഡോക്കർഫയൽ ഓഡിറ്റ് ചെയ്യുന്നതിന്, നിങ്ങൾ അടിസ്ഥാന നിർദ്ദേശങ്ങൾ അറിഞ്ഞിരിക്കണം:

  • `FROM`: അടിസ്ഥാന ചിത്രം തിരഞ്ഞെടുക്കുന്നു (ഉദാഹരണത്തിന് python:3.12-slim). ഇവിടെ നിന്നാണ് ചിത്രത്തിൻ്റെ വലിപ്പവും സുരക്ഷയും പ്രധാനമായും വരുന്നത്.
  • `WORKDIR`: പ്രവർത്തിക്കുന്ന ഡയറക്ടറി വ്യക്തമാക്കുന്നു.
  • `പകർപ്പ്` / `ചേർക്കുക`: ചിത്രത്തിലേക്ക് ഫയലുകൾ പകർത്തുന്നു.
  • `RUN`: ബിൽഡ് സമയത്ത് ഒരു കമാൻഡ് പ്രവർത്തിപ്പിക്കുന്നു (ഉദാ. ഒരു ഡിപൻഡൻസി ഇൻസ്റ്റാൾ ചെയ്യുന്നു). ഓരോ RUN-ഉം ഒരു പുതിയ ലെയർ സൃഷ്ടിക്കുന്നു.
  • `ENV`: പരിസ്ഥിതി വേരിയബിൾ നിർവചിക്കുന്നു.
  • `എക്സ്പോസ്`: കണ്ടെയ്നർ ശ്രദ്ധിക്കുന്ന പോർട്ടുകൾ.
  • `CMD` / `ENTRYPOINT`: കണ്ടെയ്നർ ആരംഭിക്കുമ്പോൾ റൺ ചെയ്യുന്ന കമാൻഡ് നിർണ്ണയിക്കുന്നു.

ഒരു നിർണായക ആശയം പാളിയാണ്: ഡോക്കർ ഓരോ നിർദ്ദേശങ്ങളും ഒരു ലെയറായി കാഷെ ചെയ്യുന്നു. നിങ്ങൾ പതിവായി മാറിക്കൊണ്ടിരിക്കുന്ന ഘട്ടങ്ങൾ അവസാനം ഇടുകയാണെങ്കിൽ, മാറ്റമില്ലാത്ത ലെയറുകൾ കാഷെയിൽ നിന്ന് വരുകയും ബിൽഡ് വേഗത്തിലാക്കുകയും ചെയ്യും.

നുറുങ്ങ്: ചിത്രത്തിൻ്റെ വലുപ്പം കുറയ്ക്കുന്നതിനുള്ള രണ്ട് വലിയ ലിവറുകൾ ഇവയാണ്: (1) സ്ലിം അല്ലെങ്കിൽ ആൽപൈൻ പോലുള്ള ഒരു ചെറിയ അടിസ്ഥാന ചിത്രം തിരഞ്ഞെടുക്കൽ; (2) മൾട്ടി-സ്റ്റേജ് ബിൽഡ് ഉപയോഗിച്ച് - ഒരു ഘട്ടത്തിൽ ബിൽഡ് ടൂളുകൾ ഉപേക്ഷിച്ച് അന്തിമ ഉൽപ്പന്നം ഒരു നേർത്ത ചിത്രത്തിലേക്ക് മാത്രം പോർട്ട് ചെയ്യുന്നു. AI-ക്ക് ആവശ്യമുള്ളപ്പോഴെല്ലാം ഇവ രണ്ടും വിദഗ്ധമായി നടപ്പിലാക്കാൻ കഴിയും.

ചെറിയ ചിത്രം വളരെ പ്രധാനമായിരിക്കുന്നത് എന്തുകൊണ്ട്? കാരണം ഇമേജ് സൈസ് എന്നത് ഒരു ഡിസ്കിൻ്റെ പ്രശ്നം മാത്രമല്ല. ഒരു വലിയ ഇമേജ് ഓരോ വിന്യാസത്തിലും വലിക്കാൻ കൂടുതൽ സമയമെടുക്കും, രജിസ്ട്രിയിൽ കൂടുതൽ ഇടം എടുക്കുന്നു, പുതിയ പോഡ്‌സ് സ്കെയിൽ ചെയ്യുമ്പോൾ അതിൻ്റെ ആരംഭം മന്ദഗതിയിലാക്കുന്നു, കൂടാതെ അതിൽ കൂടുതൽ പാക്കേജുകൾ അടങ്ങിയിരിക്കുന്നതിനാൽ, അത് ഒരു വലിയ ആക്രമണ പ്രതലം നൽകുന്നു-അതായത്, ആക്രമണകാരിക്ക് ചൂഷണം ചെയ്യാൻ തുറന്ന ഇടം. 1 GB ചിത്രത്തിന് പകരം 100 MB ഇമേജ് ഉപയോഗിക്കുന്നു; ഇത് വിന്യാസ സമയം കുറയ്ക്കുകയും ചെലവ് കുറയ്ക്കുകയും സുരക്ഷ വർദ്ധിപ്പിക്കുകയും ചെയ്യുന്നു. ഒരു ഡോക്കർഫയൽ ഒപ്റ്റിമൈസ് ചെയ്യുന്നത് ഈ മൂന്ന് നേട്ടങ്ങളും ഒരേസമയം കൊയ്യുന്നു. ഒപ്റ്റിമൈസ് ചെയ്ത ഡോക്കർഫയലിനായി AI-യോട് ആവശ്യപ്പെടുമ്പോൾ "ഏറ്റവും ചെറിയ അന്തിമ ചിത്രം" ലക്ഷ്യം വ്യക്തമായി പ്രസ്താവിക്കുക; അതിനാൽ, സമാഹരണ ഘട്ടം വേർതിരിക്കുന്നതിനും അനാവശ്യ പാക്കേജുകൾ ഉപേക്ഷിക്കുന്നതിനും ഇത് മുൻഗണന നൽകുന്നു.

ഘട്ടം ഘട്ടമായി: AI ഉപയോഗിച്ച് ഡോക്കർഫയൽ സൃഷ്ടിക്കുകയും ഒപ്റ്റിമൈസ് ചെയ്യുകയും ചെയ്യുന്നു

  1. അപേക്ഷ വിവരിക്കുക. ഭാഷ, പതിപ്പ്, ഇൻപുട്ട് കമാൻഡ്, ലിസൻഡ് പോർട്ട്.
  2. ആദ്യത്തെ ഡ്രാഫ്റ്റ് തയ്യാറാക്കുക. ലളിതമായി പ്രവർത്തിക്കുന്ന ഡോക്കർഫയൽ അഭ്യർത്ഥിക്കുക.
  3. ഒപ്റ്റിമൈസ് ചെയ്യുക. മൾട്ടി-സ്റ്റേജ് ബിൽഡ്, മൈനർ ബേസ് ഇമേജ്, ലെയർ ഓർഡർ ഒപ്റ്റിമൈസേഷൻ എന്നിവയ്ക്കായി ഇതേ AI-യോട് ആവശ്യപ്പെടുക.
  4. സുരക്ഷ പരിശോധിക്കുക. രഹസ്യം ഉൾച്ചേർത്തതാണോ, അത് റൂട്ട് ആയി പ്രവർത്തിക്കുന്നുണ്ടോ, എന്തെങ്കിലും അനാവശ്യ ഉപകരണങ്ങൾ ഉണ്ടോ?
  5. വലുപ്പം നിർമ്മിക്കുകയും അളക്കുകയും ചെയ്യുക. ഡോക്കർ നിർമ്മാണത്തിന് ശേഷം ഡോക്കർ ഇമേജുകൾക്കൊപ്പം വലിപ്പം കാണുക.
  6. സ്കാൻ ചെയ്യുക. ഡോക്കർ സ്കൗട്ട് അല്ലെങ്കിൽ ട്രിവി പോലുള്ള ഒരു എക്സ്പ്ലോയിറ്റ് സ്കാനർ ഉപയോഗിച്ച് അറിയപ്പെടുന്ന കേടുപാടുകൾ പരിശോധിക്കുക.

സുരക്ഷ: കണ്ടെയ്നർ-നിർദ്ദിഷ്ട അപകടസാധ്യതകൾ

കണ്ടെയ്നർ സുരക്ഷ എളുപ്പത്തിൽ അവഗണിക്കപ്പെടും. മൂന്ന് നിയമങ്ങൾ:

  1. ചിത്രത്തിൽ രഹസ്യം ഉൾപ്പെടുത്തരുത്. ENV API_KEY=... അല്ലെങ്കിൽ COPY .env പോലുള്ള വരികൾ ചിത്രത്തിൻ്റെ പാളികളിൽ രഹസ്യം ശാശ്വതമായി എഴുതുന്നു; ചിത്രം ലഭിക്കുന്ന ആർക്കും അത് വായിക്കാം. റൺടൈമിൽ ഒരു പരിസ്ഥിതി വേരിയബിളായി അല്ലെങ്കിൽ നിലവറയിൽ നിന്ന് രഹസ്യം നൽകുക.
  2. റൂട്ട് ആയി പ്രവർത്തിക്കുന്നു. സ്ഥിരസ്ഥിതിയായി, കണ്ടെയ്നറുകൾ റൂട്ടായി പ്രവർത്തിക്കുന്നു; ഒരു തുറക്കൽ കണ്ടെയ്‌നറിൽ നിന്നുള്ള രക്ഷപ്പെടലായി മാറും. USER നിർദ്ദേശം ഉപയോഗിച്ച് ഒരു അനധികൃത ഉപയോക്താവിലേക്ക് ഡ്രോപ്പ് ചെയ്യുക.
  3. ചെറുതും കാലികവുമായ അടിസ്ഥാന ചിത്രം. വീർത്ത ചിത്രങ്ങൾ മന്ദഗതിയിലുള്ളതും കൂടുതൽ കേടുപാടുകൾ ഉള്ളതുമാണ്. സ്ലിം/ആൽപൈൻ തിരഞ്ഞെടുക്കുക, പതിപ്പ് ശരിയാക്കുക (ഉപയോഗിക്കരുത്: ഏറ്റവും പുതിയത്).
മുന്നറിയിപ്പ്: നിങ്ങൾ RUN-ൽ ഒരു രഹസ്യം ഉപയോഗിക്കുകയും പിന്നീട് അത് ഇല്ലാതാക്കുകയും ചെയ്താലും, അത് മിഡിൽവെയറിൽ തന്നെ തുടരുകയും ഡോക്കർ ചരിത്രത്തിലൂടെ തിരികെ വായിക്കുകയും ചെയ്യാം. നിർമ്മാണ സമയത്ത് ഒരു രഹസ്യം ആവശ്യമാണെങ്കിൽ, ഡോക്കറിൻ്റെ --സീക്രട്ട് മെക്കാനിസം ഉപയോഗിക്കുക, ENV/പകർപ്പ് അല്ല.

ഒപ്റ്റിമൈസേഷൻ ഇംപാക്ട് ടേബിൾ

സാങ്കേതിക

എന്ത് ചെയ്യുന്നു

സാധാരണ പ്രഭാവം

മെലിഞ്ഞ/ആൽപൈൻ അടിസ്ഥാന ചിത്രം

അനാവശ്യ പാക്കേജുകൾ നിരസിക്കുന്നു

900MB → 120MB

മൾട്ടി-സ്റ്റേജ് ബിൽഡ്

ബിൽഡ് ടൂളുകൾ ഒഴിവാക്കുന്നു

700MB → 90MB

.ഡോക്കറിഗ്നോർ

ബിൽഡിൽ അനാവശ്യ ഫയലുകൾ ഉൾപ്പെടുന്നില്ല

വേഗത്തിലുള്ള ബിൽഡ്, ചെറിയ സന്ദർഭം

ടയർ സോർട്ടിംഗ്

കാഷെ ഹിറ്റ് വർദ്ധിപ്പിക്കുന്നു

ബിൽഡ് 5 മിനിറ്റ് → 40 സെ

പതിപ്പ് പരിഹരിക്കൽ (:15)

ആവർത്തനക്ഷമത + സുരക്ഷ

പെട്ടെന്നുള്ള അപചയം തടയുന്നു

മൂന്ന് മിനി കേസുകൾ

കേസ് 1 — 1.1 GB ചിത്രം 95 MB ആയി കുറച്ചു. ഒരു ടീമിൻ്റെ Node.js ഇമേജ് 1.1 GB ആയിരുന്നു; ഓരോ വിന്യാസത്തിനും മിനിറ്റുകൾ എടുത്തു. "മൾട്ടി-സ്റ്റേജ് ബിൽഡ്, ആൽപൈൻ എന്നിവ ഉപയോഗിച്ച് ഇത് ഒപ്റ്റിമൈസ് ചെയ്യുക" എന്ന് അവർ AI യോട് പറഞ്ഞു. AI കംപൈലേഷൻ ഘട്ടം വേർതിരിച്ച് ജനറേറ്റ് ചെയ്ത ഫയലുകൾ മാത്രം നേർത്ത ചിത്രത്തിലേക്ക് നീക്കി; ഫലം 95 MB ആയിരുന്നു, വിന്യാസ സമയം മൂന്നിലൊന്നായി കുറഞ്ഞു.

കേസ് 2 - കുഴിച്ചിട്ട രഹസ്യം പിടികൂടി. YZ നിർമ്മിച്ച ഡോക്കർഫയലിൽ ENV DB_PASSWORD=prod_secret എന്ന വരി ഒരു എഞ്ചിനീയർ ശ്രദ്ധിച്ചു. AI ചിത്രത്തിലേക്ക് പാസ്‌വേഡ് ഉൾച്ചേർത്തതിനാൽ അത് "പ്രവർത്തിക്കുന്നു". എഞ്ചിനീയർ ഇത് നീക്കം ചെയ്യുകയും റൺടൈമിലെ എൻവയോൺമെൻ്റ് വേരിയബിളിൽ നിന്ന് പാസ്‌വേഡ് വായിക്കുന്നതിലേക്ക് മാറ്റുകയും ചെയ്തു. അല്ലെങ്കിൽ, ചിത്രം പകർത്തിയ ആർക്കും പാസ്‌വേഡ് വായിക്കാൻ കഴിയും.

കേസ് 3 - റൂട്ട് രക്ഷപ്പെടാനുള്ള സാധ്യത. ഒരു സ്കാനിംഗ് ടൂൾ റിപ്പോർട്ട് ചെയ്തത് AI നിർമ്മിച്ച ചിത്രം റൂട്ട് ആയി പ്രവർത്തിക്കുന്നുണ്ടെന്നും അതിൽ ഒരു നിർണായകമായ കേടുപാടുകൾ ഉണ്ടെന്നും. ടീം USER appuser നെ ചേർക്കുകയും അടിസ്ഥാന ചിത്രം നിലവിലെ പതിപ്പിലേക്ക് തള്ളുകയും ചെയ്തു; സ്കാൻ ക്ലിയർ ചെയ്തു. പാഠം: പ്രസിദ്ധീകരിക്കുന്നതിന് മുമ്പ് ഓരോ ചിത്രവും സ്കാൻ ചെയ്ത് അനധികൃത ഉപയോക്താക്കൾക്ക് തുറന്നുകാട്ടുക.

പകർത്താവുന്ന നാല് ടെംപ്ലേറ്റുകൾ

1) ഒപ്റ്റിമൈസ് ചെയ്ത ഡോക്കർഫയൽ സൃഷ്ടിക്കുന്നു:

[ഭാഷ/ചട്ടക്കൂട്] ആപ്ലിക്കേഷനായി ഒരു പ്രൊഡക്ഷൻ-റെഡി ഡോക്കർഫയൽ എഴുതുക. മാർഗ്ഗനിർദ്ദേശങ്ങൾ:- മൾട്ടി-സ്റ്റേജ് ബിൽഡ് ഉപയോഗിക്കുക; അന്തിമ ചിത്രം സാധ്യമായ ഏറ്റവും ചെറുതാക്കുക.- അടിസ്ഥാന ഇമേജ് സ്ലിം/ആൽപൈൻ ആണ്, പതിപ്പ് ഉറപ്പിച്ചിരിക്കുന്നു (":ഏറ്റവും പുതിയ" ഉപയോഗിക്കരുത്).- ഒരു അനധികൃത ഉപയോക്താവിനൊപ്പം കണ്ടെയ്നർ പ്രവർത്തിപ്പിക്കുക, റൂട്ട് അല്ല.- ചിത്രത്തിൽ ഒരിക്കലും രഹസ്യം ഉൾപ്പെടുത്തരുത്; റൺടൈമിൽ പരിസ്ഥിതി വേരിയബിളിനായി കാത്തിരിക്കുക. - .dockerignore നിർദ്ദേശം ചേർക്കുക. ഇൻപുട്ട് കമാൻഡ്: [X], ലിസണിംഗ് പോർട്ട്: [Y].

2) നിലവിലുള്ള ഡോക്കർഫയൽ ഒപ്റ്റിമൈസ് ചെയ്യുക:

ചെറുതാക്കാനും വേഗത്തിലാക്കാനും ഈ ഡോക്കർഫയൽ പരിശോധിക്കുക. ലെയർ ഓർഡർ, മൾട്ടി-ഫേസ് ബിൽഡ്, ബേസ് ഇമേജ്, അനാവശ്യ പാക്കേജുകൾ എന്നിവയുടെ അടിസ്ഥാനത്തിൽ വ്യക്തമായ മാറ്റങ്ങൾ ശുപാർശ ചെയ്യുക; ഓരോ മാറ്റത്തിൻ്റെയും കണക്കാക്കിയ വലുപ്പം/വേഗത ആഘാതം എഴുതുക. ഡോക്കർഫയൽ: [CONTENT]

3) സുരക്ഷാ ഓഡിറ്റ്:

സുരക്ഷയ്ക്കായി ഈ Dockerfile പരിശോധിക്കുക: ഉൾച്ചേർത്ത രഹസ്യങ്ങൾ, റൂട്ട് ഉപയോക്താക്കൾ, സ്ഥിരീകരിക്കാത്ത പതിപ്പുകൾ, അനാവശ്യ ഉപകരണങ്ങൾ, കാലഹരണപ്പെട്ട അടിസ്ഥാന ചിത്രങ്ങൾ എന്നിവ ഉണ്ടോ? കണ്ടെത്തലുകൾ പ്രാധാന്യത്തിൻ്റെയും ഏതെങ്കിലും തിരുത്തലുകളുടെയും ക്രമത്തിൽ പട്ടികപ്പെടുത്തുക. ഡോക്കർഫയൽ: [CONTENT]

4) ബിൽഡ് പിശക് പരിഹരിക്കൽ:

ഈ ഡോക്കർ ബിൽഡ് പിശകിന് കാരണമെന്താണ്, അത് എങ്ങനെ പരിഹരിക്കാം? കുറഞ്ഞ മാറ്റങ്ങളോടെ മൂലകാരണവും പരിഹാരവും എനിക്ക് തരൂ. നിങ്ങൾ രഹസ്യം കാണുന്നിടത്ത് യഥാർത്ഥ മൂല്യം നിർമ്മിക്കരുത്, പ്ലെയ്‌സ്‌ഹോൾഡർ ഉപയോഗിക്കുക. പിശക്: [LOG] ഡോക്കർഫയൽ: [CONTENT]

ദുർബലമായ പ്രോംപ്റ്റ് / ശക്തമായ പ്രോംപ്റ്റ്

ദുർബലമായത്: "എൻ്റെ നോഡ് ആപ്ലിക്കേഷനായി ഒരു ഡോക്കർഫയൽ എഴുതുക."

ഫലം: വലിയ ബേസ് ഇമേജ്, റൂട്ട് യൂസർ, സിംഗിൾ സ്റ്റേജ്, ഒരുപക്ഷെ രഹസ്യത്തിന് ഇരയാകാം; വലിപ്പവും സുരക്ഷയും പരിഗണിക്കാതെയുള്ള ഒരു ഔട്ട്പുട്ട്.

ശക്തമായത്: "എൻ്റെ നോഡ് 20 ആപ്ലിക്കേഷനായി ഒരു പ്രൊഡക്ഷൻ-റെഡി ഡോക്കർഫയൽ എഴുതുക: മൾട്ടി-സ്റ്റേജ് ബിൽഡ്, നോഡ്: 20-ആൽപൈൻ ബേസ് ഇമേജ് (പതിപ്പ് ഫിക്സഡ്), അനധികൃത ഉപയോക്താവിനൊപ്പം റൺ ചെയ്യുക, രഹസ്യ ഉൾച്ചേർക്കൽ, പോർട്ട് 3000-ൽ കേൾക്കൽ, ലോഗിൻ നോഡ് dist/server.js. കൂടാതെ .dockerignore നിർദ്ദേശിക്കുക."

വ്യത്യാസം: രണ്ടാമത്തെ പ്രോംപ്റ്റ് പതിപ്പ് ഒപ്റ്റിമൈസേഷൻ ടെക്നിക്, സെക്യൂരിറ്റി റൂൾ, ലോഗിൻ കമാൻഡ് എന്നിവ നൽകുന്നു; ഔട്ട്പുട്ട് ചെറുതും സുരക്ഷിതവും നേരിട്ട് ഉപയോഗിക്കാവുന്നതുമായി മാറുന്നു.

സാധാരണ തെറ്റുകൾ

  • `ENV`/`പകർപ്പ്` ഉപയോഗിച്ച് ചിത്രത്തിൽ രഹസ്യം ഉൾച്ചേർക്കുന്നു. ഇത് പാളികളിൽ തുടരുകയും വീണ്ടും വായിക്കുകയും ചെയ്യുന്നു.
  • റൂട്ട് ആയി പ്രവർത്തിക്കുന്നു. USER നിർദ്ദേശം ഒഴിവാക്കുന്നത് ഗുരുതരമായ സുരക്ഷാ അപകടമാണ്.
  • `:ലേറ്റസ്റ്റ്` ഉപയോഗിക്കുന്നു. ഇത് ആവർത്തിക്കാനാവാത്ത ബിൽഡുകളും അപ്രതീക്ഷിത തടസ്സങ്ങളും സൃഷ്ടിക്കുന്നു.
  • മൾട്ടി-സ്റ്റേജ് ബിൽഡ് ഒഴിവാക്കുന്നു. കംപൈലേഷൻ ടൂളുകൾ അനാവശ്യമായി അന്തിമ ചിത്രം വീർപ്പിക്കുന്നു.
  • `.dockerignore` എന്ന് എഴുതരുത്. .git, node_modules എന്നിവ പോലുള്ള വലിയ ഡയറക്ടറികൾ ബിൽഡിൽ ഉൾപ്പെടുത്തിയിട്ടുണ്ട്.
  • ചിത്രം സ്കാൻ ചെയ്യാതെ പ്രസിദ്ധീകരിക്കുന്നു. അറിയാതെ തന്നെ അറിയാവുന്ന കേടുപാടുകൾ ഉണ്ടാക്കുന്നു.

ചുരുക്കത്തിൽ

എല്ലായിടത്തും ഒരേപോലെ പ്രവർത്തിക്കുന്ന പോർട്ടബിൾ പാക്കേജുകളിലേക്ക് കണ്ടെയ്‌നറുകൾ ആപ്ലിക്കേഷൻ ഇടുന്നു; പാചകക്കുറിപ്പ് Dockerfile ആണ്. പ്രൊഡക്ഷൻ-റെഡി, ഒപ്റ്റിമൈസ് ചെയ്ത ഡോക്കർഫയലുകൾ നിർമ്മിക്കുന്നതിൽ AI ശക്തമാണ് - എന്നാൽ നിങ്ങൾക്ക് വ്യക്തമായി മൾട്ടി-സ്റ്റേജ് ബിൽഡുകൾ, ചെറിയ അടിസ്ഥാന ഇമേജുകൾ, അനധികൃത ഉപയോക്താക്കളില്ല, രഹസ്യങ്ങൾ എന്നിവ ആവശ്യമാണ്. ചിത്രത്തിൻ്റെ വലുപ്പം കുറയ്ക്കുന്നത് വിന്യാസം വേഗത്തിലാക്കുന്നു; രഹസ്യം ഉൾച്ചേർക്കാതിരിക്കുക, റൂട്ട് രക്ഷപ്പെടുക, ചിത്രം സ്കാൻ ചെയ്യുക എന്നിവ സുരക്ഷ ഉറപ്പാക്കുന്നു. ഓരോ പാചകക്കുറിപ്പും എന്താണ് ചെയ്യുന്നതെന്നും അത് എവിടെയാണ് ചോർന്നതെന്നും പരിശോധിക്കേണ്ടത് നിങ്ങളുടെ ഉത്തരവാദിത്തമാണ്.

ആപ്ലിക്കേഷൻ ടാസ്ക്

ഒരു ലളിതമായ ആപ്പ് തിരഞ്ഞെടുക്കുക. "ഒപ്റ്റിമൈസ് ചെയ്ത ഡോക്കർഫയൽ ജനറേഷൻ" ടെംപ്ലേറ്റ് ഉപയോഗിച്ച് AI ഒരു ഡോക്കർഫയൽ സൃഷ്ടിക്കുക. തുടർന്ന്: (1) ഉൾച്ചേർത്ത രഹസ്യവും റൂട്ട് ഉപയോക്താവും "സുരക്ഷാ പരിശോധന" ടെംപ്ലേറ്റ് ഉപയോഗിച്ച് പരിശോധിക്കുക; (2) സാധ്യമെങ്കിൽ, ഡോക്കർ നിർമ്മിക്കുകയും ഡോക്കർ ഇമേജുകൾ ഉപയോഗിച്ച് വലുപ്പം അളക്കുകയും ചെയ്യുക; (3) അടുത്ത ഘട്ടമെന്ന നിലയിൽ ചിത്രം കുറയ്ക്കുന്നതിന് ഏത് സാങ്കേതികതയാണ് ഏറ്റവും ഫലപ്രദമെന്ന് ശ്രദ്ധിക്കുക.

ചെക്ക്ലിസ്റ്റ്

  • [ ] ഞാൻ എൻ്റെ പ്രോംപ്റ്റിലേക്ക് ഭാഷ/ഫ്രെയിംവർക്ക് പതിപ്പ്, ഇൻപുട്ട് കമാൻഡ്, പോർട്ട് എന്നിവ ചേർത്തു.
  • [ ] ഡോക്കർഫയലിൽ ഉൾച്ചേർത്ത രഹസ്യങ്ങളൊന്നുമില്ല; രഹസ്യ റൺടൈമിൽ പ്രതീക്ഷിക്കുന്നു.
  • [ ] കണ്ടെയ്നർ പ്രവർത്തിക്കുന്നത് ഒരു അനധികൃത USER ഉപയോഗിച്ചാണ്, റൂട്ട് അല്ല.
  • [ ] അടിസ്ഥാന ചിത്രം ചെറുതാണ് (സ്ലിം/ആൽപൈൻ) അതിൻ്റെ പതിപ്പ് സ്ഥിരമാണ് (ഇല്ല: ഏറ്റവും പുതിയത്).
  • [ ] ഞാൻ മൾട്ടി-സ്റ്റേജ് ബിൽഡ്, .dockerignore എന്നിവ ഉപയോഗിച്ചു.
  • [ ] ഞാൻ ഒരു ദുർബലത സ്കാനർ ഉപയോഗിച്ച് ചിത്രം സ്കാൻ ചെയ്തു.