React/Next.js Uygulamasını Docker'laştırma
Bir Next.js uygulaması için çok aşamalı Dockerfile yazın ve Docker Compose ile yerel olarak çalıştırın.
React/Next.js Uygulamasını Docker'laştırma, CoddyKit'te ücretsiz bir React Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, React Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. React Academy kursu toplamda 4 dersten oluşur.
Neden Docker?
Docker kapsayıcıları uygulamanızı ve bağımlılıklarını birlikte paketleyerek geliştirme, hazırlık ve üretim ortamlarında tutarlı davranış sağlar. Aynı imaj her yerde çalışır.
Düz React SPA için Dockerfile
İki aşamalı bir derleme: derleme için Node.js, statik çıktıyı sunmak için Nginx.
# Stage 1: Build
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# Stage 2: Serve with Nginx
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]SPA Yönlendirmesi için Nginx Yapılandırması
Tüm yollar için index.html sunacak şekilde Nginx'i yapılandırın (istemci tarafı yönlendirme desteği).
# nginx.conf
server {
listen 80;
root /usr/share/nginx/html;
index index.html;
location / {
try_files $uri $uri/ /index.html; # SPA routing
}
location ~* \.(js|css|png|jpg|woff2)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
}Next.js Bağımsız Mod Dockerfile'ı
Next.js 12 ve sonraki sürümleri, üretim için en küçük imajı oluşturmak üzere yalnızca gerekli dosyaları kopyalayan output: 'standalone' seçeneğini destekler.
// next.config.js
module.exports = { output: 'standalone' };
# Dockerfile (Next.js standalone)
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
COPY --from=builder /app/public ./public
EXPOSE 3000
CMD ["node", "server.js"].dockerignore
Derlemeleri hızlandırmak ve imaj boyutunu küçültmek için gereksiz dosyaları Docker derleme bağlamından hariç tutun.
node_modules
.next
dist
.env*
.git
README.md
*.test.tsDerleme ve Çalıştırma
İmajı derleyin ve yerel olarak çalıştırın.
# Build:
docker build -t my-next-app .
# Run:
docker run -p 3000:3000 -e DATABASE_URL=postgres://... my-next-app
# Check size:
docker images my-next-appYerel Geliştirme için Docker Compose
Uygulamayı bağımlılıklarıyla (veritabanı, Redis) birlikte tek bir komutla çalıştırmak için Docker Compose kullanın.
# docker-compose.yml
services:
web:
build: .
ports: ['3000:3000']
environment:
DATABASE_URL: postgresql://postgres:password@db:5432/myapp
depends_on: [db]
db:
image: postgres:16-alpine
environment:
POSTGRES_PASSWORD: password
POSTGRES_DB: myapp
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:Sağlık Denetimleri
Düzenleyicilerin kapsayıcının ne zaman hazır olduğunu anlayabilmesi için Dockerfile'a bir sağlık denetimi ekleyin.
HEALTHCHECK --interval=30s --timeout=3s \
CMD curl -f http://localhost:3000/api/health || exit 1Çalışma Zamanında Ortam Değişkenleri
Ortam değişkenlerini docker run sırasında veya --env-file aracılığıyla aktarın. Gizli bilgileri asla imaja gömmeyin.
docker run -p 3000:3000 \
--env-file .env.production \
my-next-appÇok Platformlu Derlemeler
Docker Buildx ile birden fazla CPU mimarisi için (M1 Mac'ler ve bulut sanal makineleri için ARM64, çoğu sunucu için AMD64) imajlar derleyin.
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t myregistry/my-next-app:latest \
--push .Hızlı Kontrol
React/Next.js uygulaması için çok aşamalı Docker derlemelerini kullanmanın yararı nedir?
Özet
Çok aşamalı Dockerfile'lar kullanın: derleme için Node.js, sunum için Nginx veya node:alpine. En küçük imajlar için Next.js yapılandırmasına output: 'standalone' ekleyin. Yerel geliştirme için Docker Compose kullanın, gizli bilgileri çalışma zamanında ortam değişkenleriyle aktarın ve ARM ile AMD64 uyumluluğu için Buildx ile çok platformlu imajlar derleyin.
Sıkça Sorulan Sorular
“React/Next.js Uygulamasını Docker'laştırma” dersi ücretsiz mi?
Evet — “React/Next.js Uygulamasını Docker'laştırma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve React Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. React Academy kursu toplamda 4 dersten oluşur.
“React/Next.js Uygulamasını Docker'laştırma” dersinde ne öğreneceğim?
Bir Next.js uygulaması için çok aşamalı Dockerfile yazın ve Docker Compose ile yerel olarak çalıştırın. React Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
React Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te React Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“React/Next.js Uygulamasını Docker'laştırma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu React Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her React Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Vercel'e Dağıtım: Sıfır Yapılandırma ve Önizleme URL'leri
- AWS S3 ve CloudFront'ta React SPA Barındırma
- React/Next.js Uygulamasını Docker'laştırma
- React için GitHub Actions CI/CD