Ana Sayfa / Dokümanlar / Docker ile İlk Web Sitesi
KTD-005

Docker ile İlk Web Sitesini Yayına Alma

Bu dokümanda VPS üzerinde Docker Compose ve nginx:alpine imajı kullanarak ilk web sitemizi yayına almayı öğreneceğiz. Kurulum, bizim gerçek kemaltokmak.com projemizde kullandığımız yapı üzerinden anlatılmıştır.

Docker Docker Compose Nginx VPS HTML Web Yayını
Okuma Süresi 30-40 dakika
Bölüm Sayısı 14 bölüm
Son Güncelleme Temmuz 2026
Seviye Başlangıç - Orta

Bu Dokümanın Amacı

Bu bölümde amacımız, VPS üzerinde Docker kullanarak basit bir HTML web sitesini yayınlamaktır. Bu yapı ileride Nginx Proxy Manager, SSL sertifikası ve alan adı yönlendirmesi için temel oluşturur.

📌 Gerçek Proje Notu

Bu dokümandaki klasör yapısı ve komutlar, kemaltokmak.com sitesini yayına alırken kullandığımız gerçek Docker yapısına göre hazırlanmıştır.

Docker Klasör Yapısını Hazırlama

Docker projelerini düzenli tutmak için tüm servisleri /opt/docker altında topluyoruz.

mkdir -p /opt/docker
cd /opt/docker

Bu yapı sayesinde ileride birden fazla web sitesi veya servis eklediğimizde yönetim daha kolay olur.

Web Sitesi Proje Klasörünü Oluşturma

Kişisel web sitemiz için ayrı bir proje klasörü oluşturuyoruz.

mkdir -p /opt/docker/kemaltokmak
cd /opt/docker/kemaltokmak

Bu klasör içinde Docker Compose dosyası ve web sitesi dosyaları yer alacaktır.

HTML Klasörünü Hazırlama

Nginx container içinde yayınlanacak web dosyalarını dışarıda bir klasörde tutacağız.

mkdir -p html

Bu klasör container içine bağlanacak ve Nginx bu klasördeki dosyaları yayınlayacaktır.

İlk index.html Dosyasını Oluşturma

Web sitesinin çalıştığını test etmek için basit bir index.html dosyası oluşturuyoruz.

cat > html/index.html <<'EOF'



  
  İlk Docker Web Sitesi


  

Merhaba Docker

Bu sayfa Docker üzerinde çalışan Nginx ile yayınlanıyor.

EOF
💡 İpucu

Daha sonra bu basit dosyanın yerine gerçek site dosyalarımızı yerleştirebiliriz.

compose.yaml Dosyasını Hazırlama

Container tanımını Docker Compose dosyası ile yapıyoruz.

nano compose.yaml

Dosyanın içine şu yapı eklenir:

services:
  web:
    image: nginx:alpine
    container_name: kemaltokmak
    restart: unless-stopped
    volumes:
      - ./html:/usr/share/nginx/html:ro
    networks:
      - web

networks:
  web:
    external: true

Nginx Alpine İmajı

Bu projede nginx:alpine imajını kullanıyoruz. Alpine tabanlı imajlar daha hafif olduğu için küçük web siteleri için oldukça uygundur.

image: nginx:alpine

Volume Mantığı

Volume sayesinde sunucudaki html klasörü, container içindeki Nginx yayın dizinine bağlanır.

./html:/usr/share/nginx/html:ro

Buradaki :ro ifadesi container'ın dosyaları sadece okuma yetkisiyle kullanmasını sağlar.

Container'ı Başlatma

Compose dosyasını hazırladıktan sonra web sitesini başlatabiliriz.

docker compose up -d

-d parametresi container'ın arka planda çalışmasını sağlar.

Container Durumunu Kontrol Etme

Container'ın çalışıp çalışmadığını kontrol ediyoruz.

docker ps

Listede kemaltokmak container'ı görünüyorsa servis çalışıyor demektir.

SSH Bağlantısı docker ps ekran görüntüsü

Tarayıcıdan Test Etme

Eğer container doğrudan port yayınlıyorsa tarayıcıdan sunucu IP adresi ile test edilebilir. Bizim yapımızda site Nginx Proxy Manager üzerinden yayınlanacağı için container web ağına bağlıdır.

curl http://localhost
ℹ️ Bilgi

Nginx Proxy Manager kullanıldığında dışarıya 80 ve 443 portlarını Proxy Manager açar. Site container'ı ise içeride web ağı üzerinden çalışır.

Log Kontrolü

Container loglarını incelemek için:

docker logs kemaltokmak

Canlı log takibi yapmak için:

docker logs -f kemaltokmak

Container'ı Durdurma ve Yeniden Başlatma

Web sitesini geçici olarak durdurmak için:

docker compose down

Tekrar başlatmak için:

docker compose up -d

Sadece container'ı yeniden başlatmak için:

docker restart kemaltokmak

Bu Dokümanda Ne Öğrendik?

Bu dokümanda Docker Compose kullanarak Nginx tabanlı ilk web sitemizi yayına aldık. Böylece statik HTML dosyalarını Docker container üzerinden yayınlayabilecek temel yapıyı kurmuş olduk.

✅ Özet
  • /opt/docker klasör yapısını hazırladık.
  • Web sitesi için proje klasörü oluşturduk.
  • HTML dosyalarını ayrı bir klasörde tuttuk.
  • nginx:alpine imajı ile container tanımladık.
  • Volume bağlantısı yaptık.
  • docker compose up -d ile siteyi başlattık.
  • docker ps ve docker logs ile kontrol yaptık.
Sonraki Doküman KTD-006 — Nginx Proxy Manager Kurulumu