R
Rəşad QuliyevMüəllif
rashad.quliyev@example.comDocker ilə Node.js Tətbiqlərinin Konteynerləşdirilməsi
Multi-stage build yanaşması ilə yüngül, etibarlı və təhlükəsiz Docker imiclərinin hazırlanması addımları.
Müasir proqram təminatının çatdırılmasında (deployment) Docker standart sənaye alətinə çevrilib. Lakin bir çox tərtibatçı sadə bir Dockerfile yazaraq layihəni konteynerə saldıqda imicin həcminin 1.5 GB olduğunu görüb təəccüblənir.
Niyə belə olur və imicin həcmini necə 80 MB-a endirmək olar?
📌 1. Niyə Tək Mərhələli Dockerfile Pisdir?
Adi 'Dockerfile'-da 'npm install' çağırılanda həm production asılılıqları, həm də TypeScript, ESLint kimi nəhəng devDependencies qovluqları imicin içinə daxil olur. Bundan əlavə, layihənin mənbə kodu, git tarixçəsi və build keşləri də konteynerdə qalır. Bu həm deploymenti yavaşladır, həm də təhlükəsizlik riskidir.
📌 2. Multi-Stage Build Konsepsiyası
Multi-stage build Docker faylını bir neçə mərhələyə bölməyə imkan verir:
- Mərhələ 1 (Dependencies): Bütün paketləri quraşdırır.
- Mərhələ 2 (Builder): Kodu 'npm run build' ilə yığır və istehsal fayllarını hazırlayır.
- Mərhələ 3 (Runner): Yalnız kiçik 'node:alpine' imicindən başlayır, əvvəlki mərhələdən yalnız hazır '.next/standalone' və 'public' fayllarını götürür. Heç bir compiler, TypeScript və ya artıq fayl qalmır!
📌 3. Əlavə Təhlükəsizlik Qaydaları:
- Heç vaxt konteyneri 'root' istifadəçisi ilə işlətməyin. Həmişə xüsusi 'USER nodejs' istifadəçisi təyin edin.
- '.dockerignore' faylı yaradaraq 'node_modules', '.git', '.env' və lokal qovluqların Docker kontekstinə ötürülməsinin qarşısını alın.
- Nəticədə daha sürətli açılan, az RAM yeyən və təhlükəsiz konteyner əldə edəcəksiniz.
←Bütün yazılara qayıtKateqoriya: DevOps