Python භාෂාවෙන් ලියන API ගොඩනැගීමට Docker භාවිතා කරන තාක්ෂණවේදියන්ට, ඉදිරියට යන වෙලාවේ බරපතල, ආරක්ෂිත නොවන ඉමැජ් නිර්මාණයක් සාදා ගැනීමට හැකි වෙනවා. එවැනි ඉමැජ් වලට සංස්කාරක, හෙඩර්, root අයිතිය වැනි අතිරේක උපාංග අඩංගු වේ, ඒ නිසා ආක්රමණයක් සිදු වීමේ අවදානම වැඩි වෙනවා.
මෙම ලිපියේදී, Docker හි බහු-දියුණ්ය (multi‑stage) ඉදිකිරීමේ ක්රමයක් හඳුන්වා දෙමින්, Python API එකක් සඳහා “ආරක්ෂිත” Dockerfile එකක් කෙලින්ම ගොඩනැගීමට අවශ්ය පියවර සියල්ල විස්තර කර ඇත. පළමු “builder” පියවරේ python:3.11‑slim‑bookworm පදනම භාවිතා කර, අවශ්ය පෑකේජ් (build‑essential) සහ requirements.txt ගොනුවේ සඳහන් Python පුස්තකාලයන් pip install කරයි. මෙහිදී --prefix=/install විකල්පය භාවිතා කර, සෑම ලයිබ්රරියක්ම /install ෆෝල්ඩරයට ස්ථාපනය වේ.
දෙවන “runtime” පියවරේ, ඒකකම Python පදනම පමණක් ඇතුළත් කර, පූර්ව‑නිර්මාණය කරන ලද /install ෆෝල්ඩරය /usr/local වෙත පිටපත් කරයි. එමගින් සංස්කාරක වැනි අතිරේක උපාංග ඉවත් කර, ඉමැජ් එක ඉතා ලාහක හා ආරක්ෂිත වේ. තවත් වැදගත් කරුණක් නම්, appuser සහ appgroup නමින් non‑root පරිශීලකයෙක් නිර්මාණය කර, Docker කන්ටේනරය root අයිතියෙන් නොදුවීමට සැකසීමයි. මෙය “root privilege escalation” ප්රහාර වලට එරෙහිව ප්රතිරෝධයක් සපයයි.
Dockerfile එකේ HEALTHCHECK නියෝගයක් ඇතුළත් කර, API සාර්ථකව ක්රියාත්මක වන බව පරීක්ෂා කිරීමේ Python කේතයක් ක්රියාත්මක වේ. එමඟින් කන්ටේනරය පූර්ණයෙන්ම සාර්ථකදැයි නිරන්තරයෙන් නිරීක්ෂණය කළ හැකිය. අවසාන CMD නියෝගය uvicorn භාවිතයෙන් API එක 0.0.0.0:8000 පෝට් එකේ දියත් කරයි.
ශ්රී ලංකාවට ඇති වැදගත්කම
ශ්රී ලංකාවේ තරුණ සංවර්ධකයින්ට, Docker හි බහු‑දියුණ්ය ඉදිකිරීමේ ආකෘතිය ඉගෙන ගැනීම, ලෝකමට්ටමේ DevOps ප්රතිපත්ති අනුගමනය කිරීමට මූලික පියවරක් වේ. මෙය:
- ඉමැජ් බර අඩු කර, CI/CD පයිප්ලයින් වල ගතවන වේලාව කෙටි කරයි.
- non‑root පරිශීලක භාවිතය හරහා ආරක්ෂක අවදානම අඩු කර, ගනුදෙනුකරුවන්ගේ විශ්වාසය වැඩි කරයි.
- Trivy වැනි ස්කෑනර් මගින් CVE ගණන අඩු කර, ආරක්ෂිත නිෂ්පාදන පරිසරයක් සපයයි.
ඉන්පසු, ශ්රී ලංකා තාක්ෂණික සමාගම් Docker‑based මයික්රො සේවා (micro‑services) ආකෘතියට මාරු වීමේදී, මෙවැනි ආරක්ෂිත Dockerfile එකක් අනුගමනය කිරීමෙන්, පාරිභෝගික තොරතුරු රැකවරණය සහ සේවා අඛණ්ඩතාවය තහවුරු කළ හැකිය.
අවසන් වශයෙන්, Docker බහු‑දියුණ්ය ඉදිකිරීමේ මෙම ක්රමය, Python API සංවර්ධකයින්ට “ආරක්ෂාව + කාර්යක්ෂමතාව” දෙකම එකවර ලබා දේ. ඔබත් මේ පරිදි Dockerfile එක සැකසුවහොත්, නිෂ්පාදන පරිසරයේ අඩු CVE ගණන, වේගවත් ඩිප්ලොයිමන්ට් සහ ආරක්ෂිත API සේවාවක් ලබා ගත හැකිය.