Docker ile Web Uygulaması Dağıtımı: Modern Web ve Container Rehberi
Modern web uygulamalarını Docker ile container mimarisinde dağıtma rehberi. Dijital ajanslar ve yazılımcılar için adım adım pratik deployment süreci.
Sistem Yöneticisi
Kıdemli Yazılım Mimarı
Modern Web Dağıtımında Docker ve Trendler
Geleneksel sunucu dağıtımları yerini container mimarilerine bıraktı. Modern web dünyasında dijital ajans ekipleri ve geliştiriciler 'bende çalışıyor, sunucuda çalışmıyor' sorununu Docker ile çözüyor. Container yapıları, taşınabilirlik ve kaynak optimizasyonu sağlar.
Adım 1: Optimize Edilmiş Dockerfile Hazırlama
Uygulama kök dizininde çok aşamalı (multi-stage) Dockerfile oluşturun. İmaj boyutunu minimumda tutun:
# Build aşaması
FROM node:20-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# Production aşaması
FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
COPY --from=build /app/dist ./dist
COPY --from=build /app/package*.json ./
RUN npm ci --omit=dev
USER node
EXPOSE 3000
CMD ["node", "dist/index.js"]Adım 2: Docker Compose ile Servisleri Tanımlama
Web servisi ve veritabanı gibi bileşenleri docker-compose.yml dosyası ile orkestre edin:
version: '3.8'
services:
web:
build: .
restart: always
ports:
- "3000:3000"
environment:
- NODE_ENV=production
- DATABASE_URL=postgres://user:pass@db:5432/appdb
depends_on:
- db
db:
image: postgres:16-alpine
restart: always
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: pass
POSTGRES_DB: appdb
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:Adım 3: Nginx Ters Proxy ve SSL Yapılandırması
Modern web projelerinde container önünde ters proxy (reverse proxy) konumlandırılır. Nginx kullanarak gelen 80/443 isteklerini container portuna yönlendirin:
server {
listen 80;
server_name ornekajans.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}Adım 4: Sunucuya Dağıtım ve Çalıştırma
Üretim ortamında container'ları arka planda başlatın:
# Container'ları derle ve başlat
docker compose up -d --build
# Çalışan container durumlarını kontrol et
docker compose ps
# Logları izle
docker compose logs -f webDijital Ajanslar İçin En İyi Pratikler
- Root kullanmayın: Güvenlik açığını engellemek için Dockerfile içinde
USER nodeveya benzeri yetkisiz kullanıcı tanımlayın. - .dockerignore ekleyin:
node_modules,.gitve.envdosyalarını imaja dahil etmeyin. - Otomasyon kurun: CI/CD süreçlerine GitHub Actions veya GitLab CI ekleyerek testten geçen her commit için otomatik build alın.