Docker, yazılım geliştiricilerinin hayatını son derece kolaylaştıran, projelerini taşınabilir hale getiren ve her ortamda aynı sonuçları elde etmelerini sağlayan bir araçtır. PHP geliştiricileri için Docker, çalışma ortamlarını izole eder ve aynı zamanda projelerini hızla dağıtmayı mümkün kılar. Peki, Docker ile PHP çalışma ortamını nasıl kurarız? İşte adım adım rehberimiz!
1. Docker Nedir ve Neden PHP İçin Kullanılır?
PHP geliştiricileri için Docker, projelerinizi yerel ortamdan test sunucusuna kadar taşımayı oldukça basit hale getirir. Bunun yanı sıra, PHP’nin farklı versiyonlarıyla testler yapmak ya da veritabanı yapılandırmalarını doğru şekilde ayarlamak için mükemmel bir çözümdür.
2. Docker'ı Kurma
Docker'ı kurmak için:
1. [Docker’ın Resmi Web Sitesi](https://www.docker.com/get-started) üzerinden Docker Desktop'ı indirin.
2. Kurulum dosyasını çalıştırarak Docker’ı yükleyin.
3. Docker'ı başlattığınızda, Docker Engine’in düzgün çalıştığından emin olun.
Kurulum tamamlandığında, Docker'ı kullanmaya hazır hale geliyorsunuz!
3. PHP İçin Docker Konteyneri Oluşturma
FROM php:8.1-apache
# Çalışma dizini oluşturun
WORKDIR /var/www/html
# Proje dosyalarını kopyalayın
COPY . .
# Apache'yi aktif hale getirin
RUN apt-get update && apt-get install -y libpng-dev libjpeg-dev libfreetype6-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install gd
# Apache mod_rewrite aktif etme
RUN a2enmod rewrite
# Portu aç
EXPOSE 80
CMD ["apache2-foreground"]
Bu Dockerfile, PHP’nin 8.1 sürümünü ve Apache sunucusunu kullanarak bir konteyner oluşturur. Ayrıca, PHP'nin gerekli uzantılarını kurar ve Apache'yi başlatır. PHP dosyalarınızı bu konteynerin içine kopyaladıktan sonra, uygulamanız hızla çalışmaya başlar.
4. Docker Compose ile Veritabanı Ekleme
Aşağıdaki `docker-compose.yml` dosyasını oluşturabilirsiniz:
version: '3.7'
services:
web:
build: .
ports:
- "8080:80"
volumes:
- .:/var/www/html
networks:
- php_network
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: my_database
networks:
- php_network
networks:
php_network:
driver: bridge
Bu dosya, PHP uygulamanız için bir konteyner ve MySQL veritabanı için bir konteyner başlatır. Veritabanı için gerekli çevre değişkenlerini de ekler.
5. Docker Konteynerini Çalıştırma
docker-compose up --build
Bu komut, Docker Compose'u kullanarak PHP ve MySQL konteynerlerini başlatır ve yapılandırmanıza göre projeyi çalıştırır.
6. Projeyi Tarayıcıda Görüntüleme
7. Docker Ortamını Optimize Etme
- Küçük Image’lar Kullanın: Docker image’larınızı mümkün olduğunca küçük tutun. PHP image’ınızda sadece ihtiyaç duyduğunuz uzantıları kurarak gereksiz dosyaları ortadan kaldırın.
- Cache Kullanımı: Docker'ın cache mekanizmasını kullanarak daha hızlı build süreçleri elde edebilirsiniz.
- Veritabanı Yönetimi: Veritabanınızdaki veriler çok büyükse, veritabanı için ayrı bir volume kullanarak verilerinizi dışarıda tutabilirsiniz.