Docker Compose ile Tek Komutla Komple Web Sunucusu Kurulumu

Docker Compose, birden fazla Docker konteynerini koordine ederek karmaşık uygulamaları kolayca yönetmenizi sağlayan güçlü bir araçtır.

Docker Compose, birden fazla Docker konteynerini koordine ederek karmaşık uygulamaları kolayca yönetmenizi sağlayan güçlü bir araçtır. Bu makalede, tek bir komutla Nginx web sunucusu, PHP-FPM işlemcisi ve MySQL veritabanı içeren tam bir web sunucusu yığınını (stack) kurmayı adım adım inceleyeceğiz. Bu yaklaşım, geliştiricilerin ve sistem yöneticilerinin sunucu ortamlarını hızlıca kurmasını, test etmesini ve üretime almasını sağlar. Geleneksel kurulumlara kıyasla, Docker Compose bağımlılıkları izole eder, tutarlılık sağlar ve yeniden kullanılabilirlik sunar. Özellikle web geliştirme projelerinde, bu yöntem saatler süren manuel konfigürasyonları dakikalara indirir. Aşağıdaki talimatları takip ederek, kendi makinenizde veya sunucunuzda bu yapıyı kurabilir, ölçeklendirebilir ve yönetebilirsiniz. Bu rehber, pratik örnekler ve somut adımlarla hazırlanmıştır; her aşamada olası sorunlara karşı ipuçları da eklenmiştir.

Docker ve Compose’un Hazırlanması

Docker Compose ile web sunucusu kurmadan önce, sisteminize Docker motorunu ve Compose aracını yüklemeniz gerekmektedir. Bu adım, konteynerlerin sorunsuz çalışması için temel altyapıyı oluşturur. Linux tabanlı sistemlerde (Ubuntu, CentOS gibi), resmi Docker depolarından yükleme önerilir. Windows ve macOS kullanıcıları için Docker Desktop yeterli olacaktır. Yükleme sonrası, Docker servisinin çalıştığından emin olun ve kullanıcı hesabınızı docker grubuna ekleyin ki sudo olmadan komutlar çalıştırabilesiniz.

Gereksinimler arasında en az 2 GB RAM, 10 GB boş disk alanı ve güncel bir işletim sistemi bulunur. Docker versiyonu 20.10+, Compose v2+ olmalıdır. Bu araçlar, konteynerleri orkestre ederek ağ, hacim ve bağımlılık yönetimini otomatikleştirir. Örneğin, bir web projesinde veritabanı bağlantılarını manuel ayarlamak yerine, Compose bunları YAML dosyasında tanımlar.

Docker Motorunun Yüklenmesi

Docker’ı yüklemek için Ubuntu’da şu komutları kullanın: Önce depoları güncelleyin (apt update), ardından Docker’ı kurun (apt install docker.io). Servisi başlatın (systemctl start docker) ve açılışta etkinleştirin (systemctl enable docker). Doğrulama için docker –version komutunu çalıştırın. Bu işlem, konteynerleri çalıştırmak için gerekli runtime’ı sağlar. Potansiyel sorun: Eğer SELinux etkinse, permissive moda alın veya Docker’ı buna göre yapılandırın. Bu sayede, Nginx gibi servisler izole ortamda güvenli çalışır ve ana sisteminizi etkilemez. Yükleme sonrası, test için docker run hello-world komutunu deneyin; başarılı çıktı alırsanız hazırsınız.

Docker Compose’un Kurulumu

Docker Compose’u yüklemek için, Docker Desktop varsa dahili gelir; yoksa Linux’ta curl ile indirin: curl -L “https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose ve chmod +x verin. Versiyonu kontrol edin (docker-compose –version). Compose v2 için docker compose (boşluklu) kullanın. Bu araç, multi-konteyner uygulamaları tanımlamak için YAML kullanır ve tek komutla up/down yapmanızı sağlar. Web sunucusu için, bu bağımlılıkları yönetmek kritik öneme sahiptir; örneğin PHP’nin MySQL’e erişimini otomatik ağ köprüsüyle sağlar.

Docker Compose YAML Dosyasının Oluşturulması

Ana yapılandırma dosyası olan docker-compose.yml’i proje dizininizde oluşturun. Bu dosya, servisleri, ağları ve hacimleri tanımlar. Bizim örneğimizde, nginx (web sunucusu), php-fpm (PHP işleyicisi) ve mysql (veritabanı) servisleri yer alacak. Versiyon 3.8 kullanın ki modern özelliklerden faydalansın. Hacimler ile veri kalıcılığı sağlayın, ağ ile servisler arası iletişimi koordine edin. Dosyayı nano veya vim ile editörde yazın ve girintilere dikkat edin; YAML formatı hassastır.

version: '3.8'
services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./html:/var/www/html
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php
    networks:
      - webnet
  php:
    image: php:8.1-fpm-alpine
    volumes:
      - ./html:/var/www/html
    networks:
      - webnet
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: webdb
      MYSQL_USER: webuser
      MYSQL_PASSWORD: webpass
    volumes:
      - dbdata:/var/lib/mysql
    networks:
      - webnet
volumes:
  dbdata:
networks:
  webnet:

Bu yapılandırma, Nginx’in 80 portunu host’a açar, PHP dosyalarını paylaşır ve MySQL için kalıcı hacim tanımlar. Nginx konfigürasyonunda PHP’ye proxy ayarlayın (fastcgi_pass php:9000).

Nginx Konfigürasyon Detayları

Nginx için ayrı nginx.conf dosyası oluşturun: server bloğunda location ~ \.php$ için fastcgi_pass php:9000; ve include fastcgi_params; ekleyin. Alpine imajı hafiflik sağlar, production için uygundur. Bu servis, statik dosyaları doğrudan sunarken dinamik PHP isteklerini php-fpm’e yönlendirir. Hacimlerle kodunuzu canlı düzenleyin; değişiklikler anında yansır. Güvenlik için, production’da SSL ekleyin ve ports’u kısıtlayın.

PHP-FPM ve MySQL Entegrasyonu

PHP 8.1 imajı, fpm modülüyle gelir; ekstra eklentiler için Dockerfile kullanın. MySQL’de environment değişkenleri ile veritabanı oluşturun. php kodunda PDO ile bağlanın: $pdo = new PDO(‘mysql:host=db;dbname=webdb’, ‘webuser’, ‘webpass’);. Networks ile servis isimleri (db, php) doğrudan çözümlenir. Bu entegrasyon, tam LEMP stack’i tek dosyada sağlar.

Tek Komutla Kurulum ve Yönetim

Kurulum için proje dizinine gidin ve docker-compose up -d komutunu çalıştırın. Bu, imajları çeker, konteynerleri oluşturur ve arka planda başlatır. İlk çalıştırmada hacimler initialize olur; logs için docker-compose logs izleyin. Tarayıcıda localhost’a gidin; varsayılan Nginx sayfası görünür. Test için html/index.php’ye ekleyin.

Yönetim komutları: docker-compose down (durdur), docker-compose restart (yeniden başlat), docker-compose exec php sh (konteynere gir). Ölçeklendirme için replicas ekleyin. Bakım için prune ile temizleyin. Bu yöntem, CI/CD pipeline’larında idealdir; ortamı version control ile paylaşın.

Sonuç olarak, Docker Compose ile tek komutlu web sunucusu kurulumu, verimliliği artırır ve hataları minimize eder. Bu yapıyı temel alarak Redis cache veya Node.js ekleyebilir, production’a uyarlayabilirsiniz. Pratikte uygulayarak, geliştirme hızınızı iki katına çıkarın ve tutarlı ortamlar elde edin. Her zaman güncel imajlar kullanın ve güvenlik taramaları yapın.

Yazar: Lorem
çerik: 839 kelime
Okuma Süresi: 6 dakika
Zaman: Bugün
Yayım: 24-02-2026
Güncelleme: 24-02-2026