
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.
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ı
- 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"]
- restart: unless-stopped ile otomatik başlatma
- Resource limits ile container kaynak kısıtlaması
- .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
- Mevcut sunucu envanterini cikartin
- Yeni sunucuyu hazirlayin ve yapilandirin
- Verileri rsync ile senkronize edin
- DNS TTL degerini dusurrun
- Son senkronizasyonu yapin ve servisleri baslatin
- DNS kayitlarini guncelleyin
- 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
- Veri merkezi lokasyonu: Turkiye'de veri merkezi olan firmalari tercih edin
- Uptime garantisi: Minimum %99.5, ideal %99.8+
- Teknik destek: 7/24 Turkce destek zorunlu
- Guvenlik: DDoS korumasi, SSL, WAF dahil olmali
- Yedekleme: Gunluk otomatik yedekleme olmali
- Olceklenebilirlik: Ihtiyac artiginda kolayca yukseltme yapilabilmeli
- 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:

