Docker Nedir ve Neden Symfony ile Kullanılmalı?
Symfony, PHP tabanlı güçlü bir framework olup, geliştiricilere kolaylıklar sağlamakla birlikte bazen ortam uyumsuzlukları gibi sorunlar ortaya çıkabilir. İşte burada Docker devreye giriyor. Symfony uygulamanızı Docker konteynerlerinde çalıştırarak, tüm bağımlılıkları izole edebilir ve geliştirme ortamını herkes için aynı hale getirebilirsiniz.
Docker ile Symfony Ortamını Kurma Adımları
Docker’ı yüklemek için [Docker’ın resmi web sitesinden](https://www.docker.com/get-started) işletim sisteminize uygun sürümü indirip kurmanız yeterli. Eğer Docker’ı bilgisayarınıza kurmadıysanız, bu adımı atlamayın.
# 2. Symfony Projesini Başlatın
composer create-project symfony/skeleton my_project
cd my_project
Bu komutlar, Symfony ile yeni bir proje başlatmanıza ve proje dizinine geçmenize yardımcı olacaktır.
# 3. Dockerfile ve Docker Compose Dosyalarını Oluşturun
Dockerfile Symfony uygulamanız için bir Docker imajı oluşturur. İşte temel bir Dockerfile örneği:
FROM php:8.1-fpm
# Gerekli bağımlılıkları kur
RUN apt-get update && apt-get install -y libpng-dev libjpeg-dev libfreetype6-dev libicu-dev g++ unzip git
# PHP uzantılarını yükle
RUN docker-php-ext-configure gd --with-freetype --with-jpeg
RUN docker-php-ext-install gd intl pdo pdo_mysql
# Composer'ı indir ve yükle
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# Uygulama dizinini belirle
WORKDIR /var/www/html
# Proje dosyalarını konteynıra kopyala
COPY . .
# Symfony uygulamanızın çalışması için gerekli ortamı kur
RUN composer install
Bu Dockerfile, Symfony için gerekli olan tüm bağımlılıkları yükleyecek ve uygulamanız için bir Docker imajı oluşturacaktır.
Sonrasında, docker-compose.yml dosyasını oluşturmanız gerekir. Bu dosya, Docker konteynerlerinin nasıl çalışacağını belirler. İşte basit bir docker-compose.yml örneği:
version: '3.7'
services:
app:
build:
context: .
volumes:
- .:/var/www/html
ports:
- "8000:80"
environment:
- SYMFONY_ENV=dev
networks:
- symfony_network
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: symfony
MYSQL_USER: symfony
MYSQL_PASSWORD: symfony
ports:
- "3306:3306"
networks:
- symfony_network
networks:
symfony_network:
driver: bridge
Burada, Symfony uygulamanızı çalıştıracak bir app servisi ve MySQL veritabanınızı çalıştıracak bir db servisi tanımlıyoruz.
# 4. Konteyneri Başlatın
docker-compose up --build
Bu komut, tüm Docker servislerini başlatacak ve Symfony projenizi Docker konteynerlerinde çalıştıracaktır. Artık projenize [http://localhost:8000](http://localhost:8000) adresinden erişebilirsiniz.
Docker ile Symfony Geliştirme Ortamının Avantajları
- Taşınabilirlik: Docker konteynerleri farklı makinelerde aynı şekilde çalıştığından, başka bir makineye taşımak çok kolaydır.
- Tekrarlanabilirlik: Her geliştirici aynı ortamda çalıştığı için, yazılımda ortaya çıkabilecek "Çalışıyor ama ben de çalıştıramıyorum" türündeki sorunların önüne geçilir.
- Bağımlılık Yönetimi: Docker, tüm bağımlılıkları tek bir yerde toplar, böylece farklı PHP sürümleri ve bağımlılık sorunları yaşamazsınız.
Olası Hatalar ve Çözüm Önerileri
- Port Çakışması: Eğer 8000 portu başka bir uygulama tarafından kullanılıyorsa, `docker-compose.yml` dosyanızda portları değiştirerek çözüm bulabilirsiniz.
- PHP Uzantı Sorunları: Eğer PHP uzantıları eksikse, Dockerfile’ınızı güncelleyerek gerekli uzantıları yükleyebilirsiniz.
- Veritabanı Bağlantı Hataları: Symfony uygulamanızın doğru veritabanı bağlantı ayarlarına sahip olduğundan emin olun. `.env` dosyanızda doğru veritabanı bilgilerini girmeyi unutmayın.