 (23).png)
Merhaba arkadaşlar, bugün sizlere Laravel’de Docker kullanımı konusunu anlatacağım. Docker, geliştirme ortamınızı hızlı ve tutarlı bir şekilde kurmanızı sağlayan bir konteynerleştirme platformudur. Laravel ile Docker’ı bir araya getirerek, geliştirme sürecinizi optimize edebilir ve farklı ortamlarda uyum sorunlarını ortadan kaldırabilirsiniz. Gelin, bu konuları adım adım inceleyelim.
Docker, uygulamalarınızı konteynerler içinde çalıştırmanızı sağlayan bir platformdur. Konteynerler, uygulamanızın çalışması için gerekli tüm bağımlılıkları içerir ve farklı ortamlarda tutarlı bir şekilde çalışmasını sağlar. Bu sayede, geliştirme, test ve üretim ortamları arasında uyum sorunları yaşamazsınız.
Laravel’de Docker kullanmak için öncelikle bir Dockerfile ve docker-compose.yml dosyası oluşturmanız gerekiyor. Bu dosyalar, uygulamanızın çalışması için gerekli konteynerleri tanımlar.
Dockerfile, uygulamanızın çalışması için gerekli ortamı tanımlar. Örneğin, bir Laravel uygulaması için aşağıdaki gibi bir Dockerfile oluşturabilirsiniz:
# Temel görüntüyü seçin
FROM php:8.1-fpm
# Gerekli bağımlılıkları yükleyin
RUN apt-get update && apt-get install -y \
git \
curl \
libpng-dev \
libonig-dev \
libxml2-dev \
zip \
unzip
# PHP eklentilerini yükleyin
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd
# Composer'ı yükleyin
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# Çalışma dizinini ayarlayın
WORKDIR /var/www/html
# Uygulama dosyalarını kopyalayın
COPY . .
# Bağımlılıkları yükleyin
RUN composer install --optimize-autoloader --no-dev
# İzinleri ayarlayın
RUN chown -R www-data:www-data /var/www/html/storage /var/www/html/bootstrap/cache
# Uygulamayı çalıştırın
CMD ["php-fpm"]
Bu Dockerfile, PHP 8.1 ve gerekli eklentileri içeren bir konteyner oluşturur. Ayrıca, Composer ile bağımlılıkları yükler ve uygulamayı çalıştırır.
docker-compose.yml dosyası, uygulamanızın çalışması için gerekli tüm servisleri (örneğin, web sunucusu, veritabanı) tanımlar. Örneğin, bir Laravel uygulaması için aşağıdaki gibi bir docker-compose.yml dosyası oluşturabilirsiniz:
version: '3.8'
services:
app:
build:
context: .
dockerfile: Dockerfile
container_name: laravel_app
restart: unless-stopped
working_dir: /var/www/html
volumes:
- .:/var/www/html
networks:
- laravel_network
webserver:
image: nginx:alpine
container_name: laravel_webserver
restart: unless-stopped
ports:
- "8080:80"
volumes:
- .:/var/www/html
- ./docker/nginx:/etc/nginx/conf.d
networks:
- laravel_network
db:
image: mysql:5.7
container_name: laravel_db
restart: unless-stopped
environment:
MYSQL_DATABASE: laravel
MYSQL_USER: laravel
MYSQL_PASSWORD: secret
MYSQL_ROOT_PASSWORD: secret
ports:
- "3306:3306"
volumes:
- dbdata:/var/lib/mysql
networks:
- laravel_network
redis:
image: redis:alpine
container_name: laravel_redis
restart: unless-stopped
ports:
- "6379:6379"
networks:
- laravel_network
volumes:
dbdata:
driver: local
networks:
laravel_network:
driver: bridge
Bu dosya, dört servis tanımlar:
Dockerfile ve docker-compose.yml dosyalarını oluşturduktan sonra, uygulamanızı Docker ile çalıştırabilirsiniz. Aşağıdaki komutları kullanarak konteynerleri başlatabilirsiniz:
docker-compose build docker-compose up -d
Bu komutlar, tanımlanan servisleri başlatır ve uygulamanızı http://localhost:8080 adresinde kullanıma hazır hale getirir.
Laravel, Docker kullanımını kolaylaştırmak için Sail adında bir araç sunar. Sail, Laravel uygulamaları için önceden yapılandırılmış bir Docker ortamı sağlar.
Sail Kurulumu:
composer require laravel/sail --dev php artisan sail:install
Bu komutlar, Sail’i projenize ekler ve gerekli Docker dosyalarını oluşturur. Ardından, aşağıdaki komutla uygulamanızı çalıştırabilirsiniz:
./vendor/bin/sail up
Laravel’de Docker kullanımı, geliştirme ortamınızı optimize etmenin en etkili yollarından biridir. Eğer farklı ortamlarda uyum sorunları yaşıyorsanız veya geliştirme sürecinizi hızlandırmak istiyorsanız, Docker’ı mutlaka denemelisiniz. Bir sonraki yazımda, Laravel’de SEO Dostu URL’ler Oluşturma konusuna değineceğim. Görüşmek üzere!