# Laravel’i Ubuntu 22.04’te Docker Compose ile Kurma: Adım Adım Kılavuz
Modern web uygulamaları geliştirmek için güçlü bir altyapıya ihtiyaç duyarsınız. Karmaşık bağımlılıkları yönetmek, farklı ortamlarda tutarlılık sağlamak ve geliştirme sürecini hızlandırmak için Docker ve Docker Compose mükemmel bir çözüm sunar. Bu makalede, Laravel framework’ünü Ubuntu 22.04 üzerine Docker Compose kullanarak nasıl kuracağınızı ve yapılandıracağınızı adım adım öğreneceksiniz. Bu kılavuz, yeni başlayanlardan ileri seviye geliştiricilere kadar herkes için faydalı bilgiler içermektedir.
Temel Kavramlar: Docker, Docker Compose ve Laravel
Öncelikle, kullanacağımız temel teknolojileri kısaca inceleyelim.
Docker: Uygulamalarınızı ve bağımlılıklarını içeren kapsayıcılar (containers) oluşturmanızı sağlayan bir platformdur. Her kapsayıcı, izole edilmiş bir ortamda çalışır ve işletim sisteminizin diğer parçalarından bağımsızdır. Bu, geliştirme, test ve üretim ortamlarında tutarlılık sağlar. Bir Linux sunucusunda PHP, MySQL ve diğer bağımlılıklarınızı yöneterek, işletim sistemi kaynaklarını daha etkin kullanırsınız. Docker sayesinde, geliştirme ortamınızı kolayca çoğaltabilirsiniz.
Docker Compose: Birden fazla Docker kapsayıcısını yönetmeyi kolaylaştıran bir araçtır. docker-compose.yml dosyasıyla kapsayıcıların nasıl oluşturulacağını, birbirleriyle nasıl iletişim kuracaklarını ve hangi portları kullanacaklarını tanımlarsınız. Bu, karmaşık uygulamaların yönetimini basitleştirir.
Laravel: PHP tabanlı, popüler bir açık kaynaklı web uygulama framework’üdür. Eloquent ORM, güçlü routing sistemi, ve geniş bir ekosistem ile geliştirme sürecini hızlandırır ve uygulamalarınızın ölçeklenebilirliğini artırır. Laravel’in getirdiği kolaylıklar sayesinde, zamanınızın büyük bir kısmını tekrarlayan kod yazmak yerine, iş mantığına odaklanabilirsiniz.
1. Sistem Hazırlığı: Ubuntu 22.04’te Docker ve Docker Compose Kurulumu
Öncelikle, Ubuntu 22.04 sisteminize Docker ve Docker Compose’u kurmanız gerekir. Bunun için aşağıdaki adımları izleyin:
sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo usermod -aG docker $USER
sudo systemctl restart docker
Kurulumdan sonra, docker version ve docker-compose version komutlarıyla sürümleri doğrulayın. Kullanıcı grubunuza docker grubunu ekleyerek, sudo kullanmadan Docker komutlarını çalıştırabilirsiniz. Sisteminizi yeniden başlatmanız gerekebilir.
2. Laravel Projesi Oluşturma ve Docker Compose Dosyası Hazırlama
Bir Laravel projesi oluşturalım ve Docker Compose dosyasını yapılandıralım. Öncelikle, projenizin dizinini oluşturun ve içine girin:
mkdir my-laravel-project && cd my-laravel-project
Şimdi, Laravel projesini Composer kullanarak indirelim:
composer create-project --prefer-dist laravel/laravel .
Ardından, docker-compose.yml dosyasını oluşturun ve aşağıdaki içeriği ekleyin:
version: "3.9"
services:
web:
build:
context: .
dockerfile: Dockerfile
ports:
- "8000:80"
volumes:
- ./:/var/www/html
- ./vendor:/var/www/html/vendor
depends_on:
- db
environment:
- APP_ENV=local
- DB_HOST=db
- DB_PORT=3306
- DB_DATABASE=laravel
- DB_USERNAME=root
- DB_PASSWORD=root
db:
image: mysql:8
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=laravel
- MYSQL_USER=root
- MYSQL_PASSWORD=root
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
Bu dosya, web sunucusu ve MySQL veritabanı kapsayıcılarını tanımlar. Dockerfile dosyasını da oluşturmanız gerekiyor.
3. Dockerfile Oluşturma ve Web Sunucusu Yapılandırması
Projenizin kök dizinine Dockerfile adında bir dosya oluşturun ve aşağıdaki içeriği ekleyin:
FROM php:8.1-apache
RUN docker-php-ext-install pdo pdo_mysql mbstring
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
COPY ./ /var/www/html
RUN chown -R www-data:www-data /var/www/html
RUN composer install --no-interaction --optimize-autoloader --no-dev
RUN php artisan key:generate
EXPOSE 80
Bu dosya, PHP 8.1 ve Apache kullanan bir web sunucusu görüntüsü oluşturur. Gerekli PHP uzantılarını yükler, Composer’ı kurar, Laravel projesini kopyalar, bağımlılıkları yükler ve Laravel’in gizli anahtarını oluşturur.
4. Uygulamanın Çalıştırılması ve Veritabanı Göçleri
Artık Docker Compose kullanarak uygulamanızı çalıştırabilirsiniz:
docker-compose up -d
Bu komut, web sunucusu ve veritabanı kapsayıcılarını arka planda başlatır. Uygulamanın çalıştığından emin olmak için tarayıcınızda http://localhost:8000 adresini ziyaret edin. Laravel’in varsayılan karşılama sayfasını görmelisiniz.
Veritabanı göçlerini uygulamak için:
docker-compose exec web php artisan migrate
Bu komut, veritabanı şemalarını oluşturur.
5. Uygulamaya Özel Yapılandırmalar ve Ortam Değişkenleri
.env dosyanızı düzenleyerek uygulamanız için özel yapılandırmalar yapabilirsiniz. Örneğin, uygulama adı, veritabanı bağlantı bilgileri gibi ayarları burada düzenleyebilirsiniz. APP_ENV ortam değişkenini geliştirme, test veya üretim ortamlarına göre ayarlayabilirsiniz. Docker Compose dosyasında tanımladığınız ortam değişkenleri, kapsayıcılar içindeki uygulamanız tarafından kullanılabilir.
6. Gerçek Dünya Senaryoları: API Geliştirme ve Ölçeklendirme
Bu kurulumu bir REST API geliştirmek için kullanabilirsiniz. Laravel’in sağladığı kolay API oluşturma araçları ile hızlı ve verimli bir şekilde API’nizi geliştirebilirsiniz. Docker Compose’un sunduğu ölçeklendirme olanakları sayesinde, API’nizin yük altında performansını artırabilirsiniz. Örneğin, docker-compose.yml dosyasında web servisinin scale özelliğini kullanarak birden fazla web sunucusu kapsayıcısı çalıştırabilirsiniz.
7. Performans Optimizasyonu ve İleri Düzey Konular
Uygulamanızın performansını optimize etmek için çeşitli yöntemler kullanabilirsiniz. Örneğin, OpCache gibi PHP opcode önbellekleme mekanizmaları, uygulama yanıt sürelerini önemli ölçüde iyileştirebilir. Ayrıca, veritabanı sorgularınızı optimize etmek ve gereksiz disk I/O işlemlerini azaltmak da performansı artırır. docker-compose.yml dosyasında build kısmına ekleyeceğiniz optimizasyonlar, görüntünün boyutunu ve oluşturma süresini azaltabilir.
8. Sıkça Sorulan Sorular (SSS)
* Docker kapsayıcılarını nasıl durdururum? docker-compose down komutunu kullanın.
* Uygulamamda hata alıyorum, ne yapmalıyım? Hata mesajını dikkatlice inceleyin ve Docker loglarını kontrol edin (docker-compose logs). fatihsoysal.com gibi kaynaklardan yardım alabilirsiniz.
* Veritabanı kapsayıcısına nasıl erişebilirim? docker-compose exec db bash komutuyla veritabanı kapsayıcısına bağlanabilirsiniz.
* Başka bir veritabanı sistemi kullanabilir miyim? Evet, docker-compose.yml dosyasını değiştirerek farklı bir veritabanı görüntüsü kullanabilirsiniz.
* Üretim ortamına nasıl dağıtabilirim? Docker Compose’u kullanarak üretim ortamına dağıtım yapabilirsiniz. Ancak, üretim ortamı için daha gelişmiş konfigürasyonlar ve güvenlik önlemleri almanız gerekebilir. Bu konuda detaylı bilgi için fatihsoysal.com sitesini ziyaret edebilirsiniz.
Sonuç:
Bu makalede, Laravel’i Ubuntu 22.04’te Docker Compose ile kurma ve yapılandırma adımlarını detaylı bir şekilde inceledik. Docker ve Docker Compose, modern web uygulamaları geliştirme sürecinde büyük kolaylıklar sağlayan güçlü araçlardır. Bu kılavuzu izleyerek, hızlı, ölçeklenebilir ve yönetimi kolay bir Laravel geliştirme ortamı kurabilirsiniz. Unutmayın ki, performans optimizasyonu ve güvenlik önlemleri, herhangi bir üretim ortamı için kritik öneme sahiptir.
Yazar: Fatih Soysal