Buyukweb
Docker ile Web Uygulaması Deploy Etme: Başlangıç Rehberi

Docker ile Web Uygulaması Deploy Etme: Başlangıç Rehberi

Docker ile web uygulamalarını nasıl containerize edersiniz? Dockerfile oluşturma, docker-compose, Nginx ile reverse proxy ve temel Docker komutları rehberi.

Büyükweb Teknik Ekibi5 Şubat 20257 dakika okuma

Docker ile Web Uygulaması Deploy Etme: Başlangıç Rehberi

Docker, uygulamaları bağımlılıklarıyla birlikte izole container'lara paketlemenizi sağlayan bir platformdur. "Bende çalışıyor ama sunucuda çalışmıyor" sorununu ortadan kaldırır. Bu rehberde Docker ile web uygulaması deploy etmeyi öğreneceksiniz.

Docker Neden Kullanılır?

  • Ortam tutarlılığı: Geliştirme ve üretim ortamı aynı
  • İzolasyon: Her uygulama bağımsız container'da çalışır
  • Hızlı deployment: Container birkaç saniyede başlar
  • Kaynak verimliliği: VM'e kıyasla çok daha hafif
  • Ölçeklenebilirlik: Kolayca birden fazla instance başlatma

Docker Kurulumu

Ubuntu/Debian

apt update
apt install apt-transport-https ca-certificates curl software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list

apt update
apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
systemctl enable --now docker

AlmaLinux / CentOS

dnf install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin
systemctl enable --now docker

Sürüm Kontrolü

docker --version
docker compose version

Temel Docker Komutları

# Image işlemleri
docker pull nginx           # Image indir
docker images               # Lokal imageleri listele
docker rmi nginx            # Image sil

# Container işlemleri
docker ps                   # Çalışan containerlar
docker ps -a                # Tüm containerlar
docker run nginx            # Container başlat
docker stop container_id    # Durdur
docker start container_id   # Başlat
docker rm container_id      # Container sil
docker logs container_id    # Loglar
docker exec -it id bash     # Container içine gir

Dockerfile Oluşturma

Node.js uygulaması için örnek Dockerfile:

# Base image
FROM node:20-alpine

# Çalışma dizini
WORKDIR /app

# Bağımlılık dosyalarını kopyala
COPY package*.json ./

# Bağımlılıkları kur
RUN npm ci --only=production

# Uygulama kodunu kopyala
COPY . .

# Build (Next.js gibi uygulamalar için)
RUN npm run build

# Port expose et
EXPOSE 3000

# Başlatma komutu
CMD ["npm", "start"]

.dockerignore Dosyası

node_modules
.git
.env
npm-debug.log
.next

Image Oluşturma ve Çalıştırma

# Image oluştur
docker build -t buyukweb-app:latest .

# Container çalıştır
docker run -d   --name buyukweb-app   -p 3000:3000   --env-file .env   buyukweb-app:latest

docker-compose ile Çok Container Yönetimi

docker-compose.yml:

version: '3.8'

services:
  app:
    build: .
    container_name: buyukweb-app
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
      - DATABASE_URL=file:/app/prisma/blog.db
    volumes:
      - ./prisma:/app/prisma
    depends_on:
      - redis

  redis:
    image: redis:7-alpine
    container_name: buyukweb-redis
    restart: unless-stopped
    volumes:
      - redis_data:/data

  nginx:
    image: nginx:alpine
    container_name: buyukweb-nginx
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./ssl:/etc/ssl/certs
    depends_on:
      - app

volumes:
  redis_data:

docker-compose Komutları

docker compose up -d          # Arkaplanda başlat
docker compose down           # Durdur ve kaldır
docker compose logs -f app    # Logları izle
docker compose ps             # Durum
docker compose restart app    # Yeniden başlat
docker compose exec app bash  # Container'a gir

Nginx Reverse Proxy ile Docker

nginx.conf:

server {
    listen 80;
    server_name siteniz.com;

    location / {
        proxy_pass http://app: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;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Volume Yönetimi

# Volume oluştur
docker volume create buyukweb_data

# Volume listele
docker volume ls

# Volume detayı
docker volume inspect buyukweb_data

# Container ile volume bağla
docker run -d -v buyukweb_data:/app/data buyukweb-app

Üretim Ortamı İpuçları

  1. Multi-stage build ile küçük image boyutu:
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
COPY --from=builder /app/.next ./.next
COPY --from=builder /app/public ./public
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package.json ./
EXPOSE 3000
CMD ["npm", "start"]
  1. restart: unless-stopped ile otomatik başlatma
  2. Resource limits ile container kaynak kısıtlaması
  3. .env dosyasını image'a dahil etmeme

Büyükweb VDS ile Docker

Büyükweb VDS sunucular üzerine Docker kurarak web uygulamalarınızı container ile deploy edebilirsiniz. Root erişimi ile Docker Engine ve docker-compose kurulumu tam olarak desteklenmektedir.

Sonuç

Docker, modern web uygulaması deployment sürecini standardize eder. Dockerfile ile uygulamanızı paketleyin, docker-compose ile çok servisli mimariyi yönetin ve Nginx reverse proxy ile trafiği yönlendirin. Geliştirmeden üretime tutarlı ortam, Docker'ın en büyük katkısıdır.


Sunucu Guvenligi En Iyi Uygulamalar

Sunucu guvenligi surekli dikkat gerektiren bir surectir.

Guvenlik Duvari

UFW veya firewalld ile yalnizca gerekli portlari acin. SSH, HTTP, HTTPS disindaki portlari kapatin. IP whitelist kullanin.

Log Analizi

fail2ban ile basarisiz giris denemelerini otomatik engelleyin. Logwatch ile gunluk raporlar olusturun. ELK Stack ile merkezi log yonetimi kurun.

Kullanici Yonetimi

Her yonetici icin ayri hesap, root kullanmayin. sudo ile yetki verin. SSH anahtar kimlik dogrulamayi zorunlu kilin.

Dosya Butunlugu

AIDE veya Tripwire ile degisiklikleri izleyin. /tmp noexec ile mount edin. chroot ile izolasyon saglayin.

Yedekleme

3-2-1 kuralini uygulayin. Yedekleri test edin. Ransomware icin offline kopya tutun.

Sunucu Izleme

Zabbix, Prometheus+Grafana veya Netdata ile izleme yapin. Alarm kurallari tanimlayin. Uptime monitoring icin UptimeRobot kullanin. Kapasite planlamasi yaparak gelecekteki ihtiyaclari onceden belirleyin.

Sik Sorulan Sorular

Sunucum hacklendi ne yapmaliyim?

Izole edin, loglari inceleyin, temiz yedekten geri yukleyin, parolalari degistirin.

Restart oncesi ne yapmaliyim?

Aktif kullanicilari kontrol edin, servisleri kaydedin, restart sonrasi dogrulayin.

Sonuc

Sunucu guvenligi katmanli yaklasim gerektirir. Yukardaki uygulamalari sistematik olarak hayata gecirin. Buyukweb 7/24 destek ekibi yardimci olabilir.

Sunucu Bakim Takvimi

Duzenli bakim sunucu sagliginin anahtaridir:

Gunluk

  • Log dosyalarini kontrol edin
  • Disk kullanimini izleyin
  • Yedeklerin basarisini dogrulayin
  • Guvenlik uyarilarini inceleyin

Haftalik

  • Guvenlik guncellemelerini uygulayin
  • Veritabani optimizasyonu calistirin
  • Performans metriklerini analiz edin

Aylik

  • Tam sistem yedegi alin ve test edin
  • Kullanici hesaplarini gozden gecirin
  • SSL sertifika surelerini kontrol edin
  • Kapasite planlama degerlendirmesi yapin

Yillik

  • Felaket kurtarma tatbikati yapin
  • Donanim yasam dongusu degerlendirmesi
  • Guvenlik denetimi yapin

Sunucu Migrasyon Rehberi

  1. Mevcut sunucu envanterini cikartin
  2. Yeni sunucuyu hazirlayin ve yapilandirin
  3. Verileri rsync ile senkronize edin
  4. DNS TTL degerini dusurrun
  5. Son senkronizasyonu yapin ve servisleri baslatin
  6. DNS kayitlarini guncelleyin
  7. Eski sunucuyu bir sure yedek tutun

Turkiye'de Hosting Sektoru 2025-2026

Sektorel Trendler

Turkiye hosting pazari hizla buyumektedir. E-ticaretin genislemesi, dijitallesme calismalarI ve uzaktan calisma trendi hosting talebini artirmaktadir. NVMe SSD, HTTP/3 ve edge computing gibi teknolojiler hosting performansini yeni seviyelere tasimaktadir.

Dikkat Edilmesi Gerekenler

Hosting sektoru rekabetci bir pazardir. Dusuk fiyat vaat eden ancak altyapı kalitesinden odun veren firmalardan kacinin. Gizli maliyet, yenileme fiyat artisi ve yetersiz destek en sik karsilasilan sorunlardir.

Hosting Firmasi Secim Kriterleri

  1. Veri merkezi lokasyonu: Turkiye'de veri merkezi olan firmalari tercih edin
  2. Uptime garantisi: Minimum %99.5, ideal %99.8+
  3. Teknik destek: 7/24 Turkce destek zorunlu
  4. Guvenlik: DDoS korumasi, SSL, WAF dahil olmali
  5. Yedekleme: Gunluk otomatik yedekleme olmali
  6. Olceklenebilirlik: Ihtiyac artiginda kolayca yukseltme yapilabilmeli
  7. Musteri yorumlari: Gercek kullanici deneyimlerini arastirin

Buyukweb 2009'dan beri bu kriterlerin tumunu karsilayarak 5.200+ musteriye guvenilir hosting hizmeti sunmaktadir. Sorulariniz icin 0850 302 60 70 numarasini arayabilir veya destek@buyukweb.com adresine yazabilirsiniz.

Sik Yapilan Hosting Hatalari

Hosting secimi ve yonetiminde en sik karsilasilan hatalar:

1. Sadece Fiyata Bakmak

En ucuz hosting her zaman en iyi secim degildir. Performans, guvenlik ve destek kalitesi fiyattan daha onemlidir. Dusuk maliyetli hostinglerde yenileme fiyatlari genellikle cok daha yuksektir.

2. Yedekleme Almamak

Otomatik yedekleme olsa bile, onemli degisikliklerden once manuel yedek almak hayati onem tasir. Yedeklerin geri yuklenebilirligini test etmeyen sirketler veri kaybi yasadiginda ciddi sorunlarla karsilasir.

3. Guncellemeleri Ertelemek

WordPress, eklentiler ve isletim sistemi guncellemelerini ertelemek guvenlik aciklarına davetiye cikarir. Otomatik guvenlik guncellemeleri yapilandirmak en temel onlemdir.

4. SSL Kullanmamak

Hala SSL sertifikasi olmayan web siteleri mevcut. SSL olmadan Google siralama duser, ziyaretci guveni azalir ve veri guvenligi tehlikeye girer. Ucretsiz Let's Encrypt sertifikasi bile yeterlidir.

5. Kaynak Planlamasi Yapmamak

Trafik artisina hazirliksiz yakalanmak, sitenizin cokmesine neden olabilir. Trafik trendlerini izleyin ve ihtiyac halinde kaynakları zamaninda artirin.

Etiketler:

#docker#sunucu#server yönetimi#sistem yönetimi

Bu yazıyı paylaş