Blog/devops/Docker ilə Next.js App Deployment — Addım-Addım Bələdçi
devops

Docker ilə Next.js App Deployment — Addım-Addım Bələdçi

B
Baku Stack AI
·20 mart 2026·4 dəq oxuma·23 baxış
devops.ascii
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ ■ ■ ■ DEVOPS ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ $ docker build . ▓
▓ → Dockerfile ✓ ▓
▓ → node:20-alpine ✓ ▓
▓ → multi-stage ✓ ▓
▓ → standalone ✓ ▓
▓ ░░░░░░░░░░░░░░░░░░░ ▓
▓ BUILD ▓▓▓▓▓▓▓░░ 78% ▓
▓ Image: 148MB ● ▓
▓ ↓ docker run -p 3000 ▓
▓ ✓ App is live! 🚀 ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓

Next.js layihəni Docker ilə containerize edib production-a çıxarmağın ən sadə və effektiv yolu — real kod nümunələri ilə.

Docker ilə Next.js App Deployment — Addım-Addım Bələdçi

Salam, developer dostum! 👋

Bakıda interview-lara gedirsən, CV-nə "Docker" yazıbsan, amma əslində sadəcə docker run hello-world çalışdırmısan? Narahat olma, bu gün bu vəziyyəti birlikdə düzəldəcəyik.

Bu məqalədə real bir Next.js layihəni sıfırdan Docker ilə containerize edəcəyik, optimize edəcəyik və production-a hazır hala gətirəcəyik. Hər addımı izah edəcəyəm — copy-paste edib işlədə biləcəyin kodlarla.


Niyə Docker? Niyə İndi?

Azərbaycanda IT bazarı sürətlə böyüyür. Bakıdakı şirkətlər — istər ABB, istər Kapital Bank-ın texnoloji komandası, istərsə də PASHA Holding-in digital layihələri — artıq microservice arxitekturasına keçir. Bu o deməkdir ki, Docker bilmək artıq "bonus" deyil, tələbdir.

Statistikaya baxaq:

  • Stack Overflow 2025 Survey-ə görə developerlərin 63%-i Docker istifadə edir
  • Azərbaycanda Docker bilən backend developer maaşı ortalama 1800-3000 AZN arasıdır, bilməyənlərdə isə bu rəqəm 1200-1800 AZN civarında qalır
  • LinkedIn-də Bakı üzrə "Docker" tələb edən vakansiyaların sayı son 1 ildə 2.3x artıb

Qısası: Docker öyrən, maaşına zam al. Sadə riyaziyyat. 😄


Hazırlıq: Nə Lazımdır?

Başlamazdan əvvəl bunlar quraşdırılmış olmalıdır:

  • Node.js (v18 və ya v20 LTS)
  • Docker Desktop (Windows/Mac) və ya Docker Engine (Linux)
  • Hər hansı bir Next.js layihə (yoxdursa, indi yaradacağıq)

Terminalı aç və yeni layihə yarat:

bash
npx create-next-app@latest my-docker-app cd my-docker-app npm run dev

http://localhost:3000 açılırsa — əla, keçirik əsas hissəyə.


Addım 1: Dockerfile Yazmaq

Layihənin root qovluğunda Dockerfile adlı fayl yarat (genişlənməsiz!):

dockerfile
# ---------- Build stage ---------- FROM node:20-alpine AS builder WORKDIR /app COPY package.json package-lock.json ./ RUN npm ci COPY . . # Next.js standalone output aktiv edirik RUN npm run build # ---------- Production stage ---------- FROM node:20-alpine AS runner WORKDIR /app ENV NODE_ENV=production ENV PORT=3000 # Təhlükəsizlik: root istifadəçi ilə çalışmırıq RUN addgroup --system --gid 1001 nodejs RUN adduser --system --uid 1001 nextjs COPY --from=builder /app/public ./public COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static USER nextjs EXPOSE 3000 CMD ["node", "server.js"]

Bu niyə belədir? Multi-stage build istifadə edirik. Birinci stage-də layihəni build edirik, ikinci stage-də isə yalnız lazımi faylları götürürük. Nəticə: image ölçüsü ~150MB olur, sadə yanaşmada isə 1.2GB+ olardı. Fərqi hiss edirsən?


Addım 2: next.config.js-i Yeniləmək

Standalone output aktiv etmək üçün next.config.mjs faylını aç və bunu əlavə et:

javascript
/** @type {import('next').NextConfig} */ const nextConfig = { output: 'standalone', }; export default nextConfig;

Bu bir sətir əlavə Next.js-ə deyir ki, production üçün minimal, öz-özünə işləyən server yarasın. Docker üçün ideal variant budur.


Addım 3: .dockerignore Faylı

Layihə root-unda .dockerignore faylı yarat:

node_modules
.next
.git
.gitignore
README.md
Dockerfile
docker-compose.yml
.env.local

Bu fayl olmasa Docker bütün node_modules qovluğunu context-ə əlavə edəcək və build 3-5 dəqiqə əvəzinə 15-20 dəqiqə çəkəcək. Vaxtın qiymətlidir.


Addım 4: Build və Run

İndi əsl sehri görəcəyik. Terminalda:

bash
# Image-i build et docker build -t my-nextjs-app . # Container-i işə sal docker run -p 3000:3000 my-nextjs-app

Brauzerini aç, http://localhost:3000 — təbrik edirəm, Next.js app-ın Docker container içində işləyir! 🎉

Faydalı əmrlər:

bash
# Bütün containerləri gör docker ps # Container-i dayandır docker stop <container_id> # Image ölçüsünü yoxla docker images my-nextjs-app

Addım 5: docker-compose ilə Professional Setup

Real layihələrdə adətən database, Redis və başqa servislər də olur. docker-compose.yml yaradaq:

yaml
version: '3.8' services: app: build: context: . dockerfile: Dockerfile ports: - "3000:3000" environment: - DATABASE_URL=postgresql://user:password@db:5432/mydb depends_on: - db restart: unless-stopped db: image: postgres:16-alpine environment: POSTGRES_USER: user POSTGRES_PASSWORD: password POSTGRES_DB: mydb volumes: - postgres_data:/var/lib/postgresql/data ports: - "5432:5432" volumes: postgres_data:

Bir əmrlə hər şeyi qaldır:

bash
docker compose up -d

Bu əmr həm Next.js app-ını, həm də PostgreSQL database-ini eyni anda qaldıracaq. Artıq lokal maşınında tam production mühiti var.


Production Deploy: Hara?

Container hazırdır, amma hara deploy edəcəyik? Azərbaycandan ən rahat variantlar:

PlatformAylıq QiymətQeyd
DigitalOcean App Platform~$5-12Ən sadə, Dockerfile-ı tanıyır
Railway~$5-20Git push ilə auto-deploy
AWS EC2 (Frankfurt region)~$8-15Bakıya ən yaxın AWS region
Hetzner€4-8Qiymət/performans kralı

Bakıdan latency baxımından Frankfurt və ya İstanbul regionları ən yaxşı nəticə verir (~30-50ms).


Bonus: Optimization Tips

  1. Layer caching: package.json-u ayrıca COPY et — dependency dəyişməyibsə, cache-dən gələcək
  2. Alpine image: node:20-alpine istifadə et, node:20-dən 3x kiçikdir
  3. Health check əlavə et:
dockerfile
HEALTHCHECK --interval=30s --timeout=3s \ CMD wget --no-verbose --tries=1 --spider http://localhost:3000/ || exit 1
  1. Environment variable-ları build time-da deyil, runtime-da ver — daha təhlükəsizdir

Son Söz

Docker öyrənmək çətin deyil — sadəcə başlamaq lazımdır. Bu məqalədəki addımları tətbiq etsən, CV-nə əsl Docker təcrübəsi yaza bilərsən, interview-da konkret danışa bilərsən.

Sabahkı müsahibədə "Docker istifadə etmisən?" sualına artıq belə cavab verəcəksən: "Bəli, multi-stage build ilə Next.js standalone output containerize edib, docker-compose ilə PostgreSQL-lə birlikdə deploy etmişəm." Recruiter-in üzündəki ifadəni təsəvvür edə bilərsən. 😎

Sualın varsa, kommentlərdə yaz — hər birinə cavab verəcəyəm.

Kod yazmağa davam! 🚀


Baku Stack — Azərbaycanın developer community-si üçün yazılır, developerlar tərəfindən yazılır.

Teqlər

Paylaş:𝕏 Twitter✈ Telegram
Bəyəndim

Oxşar məqalələr

devops.ascii
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ ■ ■ ■ CI/CD PIPELINE ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ git push → trigger ▓
▓ ↓ ▓
▓ ● checkout ✓ ▓
▓ ● npm ci ✓ ▓
▓ ● npm test ✓ ▓
▓ ● npm build ✓ ▓
▓ ● deploy ✓ ▓
▓ ↓ ▓
▓ PROGRESS ▓▓▓▓▓▓▓▓ 100%▓
▓ → SAYT CANLIDIR! ░░░ ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓

GitHub Actions ilə Avtomatik Deploy — Pulsuz Hosting, Sıfır Stress

Hər git push əmrindən sonra saytın avtomatik deploy olsun, həm də pulsuz? GitHub Actions + GitHub Pages ilə bunu 10 dəqiqəyə qurursan.

devops.ascii
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ ■ ■ ■ DEVOPS ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ $ docker build . ▓
▓ → deps ▓▓▓▓░░ 60% ▓
▓ → build ▓▓▓▓▓░ 80% ▓
▓ → runner ▓▓▓▓▓▓ ✓ ▓
▓ ● Image: 130 MB ▓
▓ ● Port: 3000 ▓
▓ ● User: nextjs ▓
▓ ──────────────────── ▓
▓ $ docker run -p 3000 ▓
▓ ✓ Ready on :3000 ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓

Docker ilə Next.js App Deployment — Addım-Addım Bələdçi

Next.js layihəni Docker ilə containerləşdirib production-a çıxarmağın ən sadə və düzgün yolu — real kod nümunələri ilə.

devops.ascii
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ ■ ■ ■ DEVOPS ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ $ minikube start ▓
▓ ✓ cluster ready ▓
▓ ▓
▓ PODs: ●●●●●○○○ ▓
▓ NODES: ●●● ▓
▓ CPU: ▓▓▓▓▓░░░ 65% ▓
▓ MEM: ▓▓▓▓░░░░ 48% ▓
▓ ▓
▓ → scaling: 2 → 20 ▓
▓ → downtime: 0 sec ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓

Kubernetes başlanğıcı — nə vaxt lazım olur, nə vaxt yox?

Hər layihəyə Kubernetes lazım deyil. Gəl birlikdə baxaq: K8s nə vaxt həqiqətən işə yarayır, nə vaxt isə vaxt itkisidir.

← Bloqa qayıt