Docker Nedir ve Neden Kullanmalıyız?
Docker, son yıllarda yazılım geliştirme dünyasında devrim niteliğinde bir teknoloji haline geldi. Peki, Docker nedir? Docker, uygulamaları konteyner adı verilen taşınabilir ortamlarda çalıştırmamızı sağlayan bir platformdur. Klasik sanal makinelerden farklı olarak, Docker konteynerleri sistem kaynaklarını daha verimli kullanır ve uygulamaları izolasyon içinde çalıştırır. Bu sayede hem geliştirme hem de üretim ortamlarında tutarlılık sağlar.
Eğer PHP ve MySQL tabanlı bir uygulama geliştirmeyi planlıyorsanız, Docker ile çalışmak, çevikliği artırır ve çok daha kolay yönetilebilir bir altyapı sunar. Üstelik Docker, "çalışıyor bende" sorununu ortadan kaldırarak, uygulamanızın her ortamda aynı şekilde çalışmasını garanti eder.
Adım 1: Docker Kurulumunu Yapıyoruz
İlk adımda, Docker’ı bilgisayarımıza kurmamız gerekiyor. Docker kurulumunu tamamladıktan sonra, komut satırına geçelim ve Docker’ın doğru şekilde yüklendiğini kontrol edelim.
Aşağıdaki komut ile Docker’ın doğru şekilde yüklendiğini kontrol edebilirsiniz:
docker --version
Eğer her şey yolundaysa, bir sonraki adıma geçebiliriz.
Adım 2: PHP ve MySQL İçin Dockerfile Oluşturma
Docker, uygulamaları izole edilmiş konteynerlerde çalıştırmak için bir yapı dosyasına ihtiyaç duyar. Bu dosya, uygulamanın hangi teknolojilerle çalışacağını ve gerekli ortamın nasıl kurulacağını belirler.
İlk olarak bir "Dockerfile" oluşturalım. Bu dosya, PHP ve MySQL servislerini çalıştırmak için gerekli komutları içerecek.
# PHP ve Apache'yi yükle
FROM php:7.4-apache
# MySQL için ortam değişkenlerini ayarla
ENV MYSQL_ROOT_PASSWORD=root
ENV MYSQL_DATABASE=mydatabase
ENV MYSQL_USER=myuser
ENV MYSQL_PASSWORD=mypassword
# Apache ve PHP'nin doğru şekilde çalışmasını sağla
COPY ./src /var/www/html/
# PHP ve Apache servislerini çalıştır
CMD ["apache2-foreground"]
Bu basit Dockerfile, PHP 7.4 ve Apache’yi içeriyor ve /src dizinindeki PHP dosyalarınızı Docker konteynerinin içine kopyalıyor. Şimdi, PHP uygulamanız ve MySQL veritabanınız için gerekli ortamı hazırladık!
Adım 3: Docker Compose ile Çoklu Konteyner Yönetimi
Docker Compose, birden fazla servisi tek bir komutla yönetmenizi sağlar. PHP ve MySQL’i aynı anda çalıştırmak için bir `docker-compose.yml` dosyasına ihtiyacımız olacak.
İşte basit bir Docker Compose yapılandırması:
version: '3.8'
services:
php:
build:
context: .
ports:
- "8080:80"
volumes:
- ./src:/var/www/html
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: mydatabase
MYSQL_USER: myuser
MYSQL_PASSWORD: mypassword
ports:
- "3306:3306"
Bu `docker-compose.yml` dosyası, PHP ve MySQL servislerini birbirine bağlar. PHP servisi, Apache ile çalışacak ve MySQL servisi de veritabanı işlemlerini yönetecek.
Adım 4: Uygulamanın Çalıştırılması
Artık her şey hazır! Docker Compose ile bu iki servisi başlatmak için aşağıdaki komutu çalıştırabilirsiniz:
docker-compose up -d
Bu komut, PHP ve MySQL servislerini arka planda başlatır ve her şeyin düzgün çalıştığından emin olur. Tarayıcınızı açıp `http://localhost:8080` adresine gittiğinizde PHP uygulamanızı görmelisiniz.
Adım 5: Üretim Ortamına Geçiş
Geliştirme ortamını başarıyla kurduktan sonra, sıra üretim ortamına geçişe geldi. Üretim ortamında daha yüksek performans, güvenlik ve ölçeklenebilirlik gereksinimlerine dikkat etmemiz gerekiyor.
- Performans Optimizasyonu: Docker konteynerlerini optimize etmek için, öncelikle konteynerlerin boyutunu küçük tutmak gerekir. Ayrıca, PHP’nin ve Apache’nin yapılandırmalarını inceleyerek performansı artırabilirsiniz.
- Güvenlik: Üretim ortamında güvenlik kritik öneme sahiptir. MySQL gibi veritabanlarını şifreli bağlantılarla kullanmak ve konteynerlerde gereksiz servisleri çalıştırmamak önemlidir.
- Ölçeklenebilirlik: Docker Compose ile çoklu konteynerler kullanabilir ve Kubernetes gibi araçlarla daha büyük altyapılara ölçeklendirebilirsiniz.
Yaygın Sorunlar ve Çözümler
Docker ile PHP ve MySQL kullanırken karşılaşabileceğiniz bazı yaygın sorunlar şunlar olabilir:
- MySQL Bağlantı Sorunları: PHP’nin MySQL veritabanına bağlanamaması genellikle yanlış veritabanı yapılandırmasından kaynaklanır. `docker-compose.yml` dosyanızda doğru ortam değişkenlerini ayarladığınızdan emin olun.
- Performans Sorunları: Docker konteynerleri doğru şekilde yapılandırılmadığında, sistem kaynaklarını verimli kullanamayabilir. PHP ve MySQL için uygun yapılandırma ayarlarını yapmayı unutmayın.
Sonuç: Docker ile PHP ve MySQL’in Gücü
Docker ile PHP ve MySQL uygulaması kurmak, size hem esneklik hem de verimlilik sağlar. Uygulamanızın her ortamda aynı şekilde çalıştığından emin olursunuz ve üretim ortamına geçiş aşamalarında sorunları minimuma indirirsiniz. Bu yazıda öğrendiklerinizi kullanarak, güçlü ve güvenilir bir Docker tabanlı uygulama geliştirmeye hazırsınız!
---