Docker Nedir ve PHP İçin Neden Kullanılır?
Docker, yazılımların izole edilmiş ortamlar içinde çalışmasını sağlayan bir platformdur. Bu ortamlar, "konteyner" olarak adlandırılır. Konteynerler, uygulamanızın her şeyini – işletim sistemi, yazılım bağımlılıkları ve yapılandırmalar – bir arada tutar. Bu sayede, uygulamanız bir konteyner içinde çalışırken, diğer sistemlerden bağımsız olarak taşınabilir olur.
PHP uygulamaları geliştirmek için Docker kullanmanın birçok avantajı vardır. Özellikle geliştirme ortamını kurarken zaman kaybetmek istemeyen geliştiriciler için mükemmel bir çözümdür. Docker, PHP'nin her sürümünü hızlıca kurmanıza olanak tanır ve bu sayede proje bağımlılıkları ile uğraşmadan direkt olarak uygulamanız üzerinde çalışabilirsiniz. Ayrıca, PHP uygulamanızın farklı ortamlar arasında (geliştirme, test, üretim) taşınması oldukça kolaydır.
Linux Üzerinde Docker Kurulumu ve PHP Konteyneri Oluşturma
Şimdi, Linux üzerinde Docker kurulumuna ve bir PHP konteyneri oluşturma adımlarına geçelim.
1. Docker'ı Yükleyin
İlk olarak, Docker'ı sisteminize kurmanız gerekiyor. Linux dağıtımınıza bağlı olarak, aşağıdaki komutları terminalde çalıştırarak Docker'ı yükleyebilirsiniz:
kopyalasudo apt-get update sudo apt-get install docker.io sudo systemctl start docker sudo systemctl enable docker
Docker'ı kurduktan sonra, doğru şekilde çalıştığından emin olmak için aşağıdaki komutu yazabilirsiniz:
kopyaladocker --version
2. PHP Konteynerini Oluşturun
PHP uygulamanızı Docker konteynerinde çalıştırmak için, PHP'nin ve Apache'nin bulunduğu bir konteyner yaratmamız gerekiyor. Docker Hub üzerinde bu konteyneri bulmak oldukça kolay. PHP ve Apache'yi içeren bir konteyner imajı seçerek hemen kullanabilirsiniz. Şimdi, bir PHP konteyneri oluşturma adımlarını takip edelim:
kopyaladocker run -d -p 8080:80 --name php-apache php:7.4-apache
Bu komut, PHP 7.4 sürümünü ve Apache web sunucusunu içeren bir konteyner çalıştırır. Şimdi, tarayıcınızda `http://localhost:8080` adresine giderek, Docker konteyneri içinde çalışan PHP uygulamanızı görebilirsiniz.
PHP ve Apache/Nginx Konteynerlerini Birleştirme
Bir PHP uygulamasının genellikle bir web sunucusuna ihtiyacı vardır. Apache veya Nginx, PHP uygulamanız için mükemmel seçeneklerdir. Docker'da Apache ile çalışan bir PHP uygulaması kurduk, ancak başka bir seçenek olarak Nginx'i de tercih edebilirsiniz.
Nginx ile PHP'yi entegre etmek için aşağıdaki adımları takip edebilirsiniz:
1. Nginx ve PHP FPM Konteyneri Çalıştırma
PHP uygulamanızı Nginx ile çalıştırmak için PHP-FPM kullanmanız gerekecek. Aşağıdaki komutla PHP-FPM konteynerini çalıştırabilirsiniz:
kopyaladocker run -d -p 9000:9000 --name php-fpm php:7.4-fpm
2. Nginx Konteyneri Çalıştırma
PHP-FPM ile uyumlu bir Nginx konteyneri çalıştırarak, her iki konteyneri birbirine bağlayabilirsiniz:
kopyaladocker run -d -p 8080:80 --link php-fpm:php --name nginx nginx
Bu adımlar, Nginx ve PHP-FPM'in düzgün bir şekilde çalışmasını sağlar. Şimdi PHP ve Nginx arasında mükemmel bir entegrasyon kurulmuş olacak.
PHP'nin Docker Konteynerinde Çalıştırılmasının Avantajları
Docker, PHP uygulamanızın taşınabilirliğini artırır. Bir uygulamayı Docker konteynerine alarak, farklı makinelerde çalıştırabilir ve geliştirme sürecinizi hızlandırabilirsiniz. Konteynerler izole çalıştığı için, uygulamanızın tüm bağımlılıkları bu konteyner içinde yer alır, böylece dış etkenlerden etkilenmeden sorunsuz bir çalışma ortamı sağlanır.
Ayrıca, Docker'ın sağladığı portabilite, geliştirme hızının artması ve bağımlılıkların yönetimi gibi avantajlarla PHP uygulamalarınızı çok daha verimli bir şekilde geliştirebilirsiniz.
PHP Uygulamanız İçin Docker ile Sürekli Entegrasyon (CI) Kurulumu
Docker kullanarak sürekli entegrasyon (CI) süreçlerini de kolayca kurabilirsiniz. Jenkins, GitLab CI veya GitHub Actions gibi araçlarla Docker'ı entegre ederek, her kod değişikliğinizde otomatik testler çalıştırabilir, yeni sürümleri hızlıca dağıtabilirsiniz.
Örneğin, aşağıdaki Dockerfile ile PHP uygulamanızın CI sürecini yapılandırabilirsiniz:
kopyalaFROM php:7.4-apache COPY . /var/www/html/ RUN docker-php-ext-install mysqli
Bu Dockerfile, PHP uygulamanızın otomatik olarak Apache konteyneri içinde çalışmasını sağlar ve sürekli entegrasyon süreçlerinizi hızlandırır.