Docker, yazılım geliştirme dünyasında devrim yaratmış bir araçtır. "Konteynerleştirme" adı verilen kavram, yazılımın çalıştığı ortamları izole etme ve taşınabilir hale getirme sürecini ifade eder. Laravel ise PHP dünyasında en popüler ve güçlü frameworklerden birisi. Peki, bu iki dev ismin birleşmesi nasıl harika sonuçlar doğurur? Docker ile Laravel uygulamasını yönetmek, her geliştiriciye büyük kolaylık sağlar. Hadi, bu yazıda Docker ve Laravel'in nasıl birleştiğine, neler sunduğuna ve uygulamanızı nasıl kolayca yönetebileceğinize bakalım.
Docker Nedir ve Laravel Projeleri İçin Neden Gereklidir?
Laravel projelerinde Docker kullanmak, yazılımın kurulumu, yapılandırılması ve dağıtımı gibi karmaşık süreçleri basitleştirir. Böylece, geliştiriciler projelerine odaklanabilir, altyapı konularında zaman kaybetmezler.
Laravel Uygulamasını Docker Konteynerine Nasıl Taşırsınız?
```dockerfile
FROM php:8.0-fpm
# Laravel bağımlılıklarını yükle
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
# Laravel uygulama dosyalarını kopyala
COPY . /var/www/html
# Çalışma dizinini ayarla
WORKDIR /var/www/html
# Composer'ı yükle
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# Composer bağımlılıklarını yükle
RUN composer install
EXPOSE 9000
CMD ["php-fpm"]
```
Bu Dockerfile, PHP 8.0 sürümünü kullanarak Laravel projenizi çalıştıracak ortamı hazırlar. Tüm bağımlılıkları yükler ve Laravel uygulamanızı konteyner içinde çalıştırmaya hazır hale getirir.
Laravel Projesi İçin Dockerfile Nasıl Yazılır?
Laravel'in Bağımlılıkları (MySQL, Redis, vb.) Docker İçinde Nasıl Yönetilir?
Docker Compose, birden fazla servisi tek bir dosya üzerinden tanımlamanıza olanak sağlar. Laravel’in veritabanı ve cache servislerini aşağıdaki gibi bir Docker Compose dosyasıyla yönetebilirsiniz:
```yaml
version: '3'
services:
app:
build:
context: .
dockerfile: Dockerfile
ports:
- "9000:9000"
volumes:
- .:/var/www/html
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: laravel
ports:
- "3306:3306"
redis:
image: redis:latest
ports:
- "6379:6379"
```
Bu Compose dosyası, Laravel uygulamanız için gerekli tüm bağımlılıkları, yani MySQL ve Redis'i kolayca başlatacaktır. `docker-compose up` komutunu çalıştırarak tüm servislere anında ulaşabilirsiniz.
Geliştirme, Test ve Üretim Ortamları İçin Docker Compose Kullanma
Örneğin, geliştirme ortamı için PHP’nin Xdebug desteğini etkinleştirmek isteyebilirsiniz. Bunun için sadece `docker-compose.override.yml` dosyasını aşağıdaki gibi düzenlersiniz:
```yaml
version: '3'
services:
app:
build:
context: .
dockerfile: Dockerfile.dev
```
Burada, `Dockerfile.dev` dosyası geliştirme ortamı için özelleştirilmiş ayarları içerir.
Docker ile Laravel Uygulamasının Performansını Nasıl Optimize Edersiniz?
İkincisi, Laravel’in önbellekleme sistemini Docker içinde optimize etmektir. Laravel’in cache ve session verilerini Redis üzerinde tutmak, uygulamanızın hızını ciddi şekilde artıracaktır.