Docker ve PHP kullanarak geliştirme ortamı kurmak, hem hız hem de taşınabilirlik açısından büyük avantaj sağlar. Bu nedenle, bu rehberde Docker Compose ile PHP ortamını adım adım nasıl yapılandıracağınızı anlatacağım. Başlangıç seviyesinde olsanız da, detaylara hakim olmanız açısından örneklerle zenginleştirdim.
Öncelikle, Docker ve Docker Compose'un sisteminizde kurulu olması gerekir. Docker kurulumunu
resmi dokümandan takip ederek tamamlayabilirsiniz. Ardından, PHP ortamı ve bağlı servisleri içeren bir
docker-compose.yml dosyası oluşturarak, geliştirme ortamınızı kolayca ayağa kaldırabilirsiniz.
İlk adım olarak, projenizin kök dizininde
docker-compose.yml dosyasını yaratın. Bu dosyada, PHP için resmi imajı kullanırken, aynı zamanda Apache veya Nginx gibi web sunucuları ve MySQL gibi veritabanlarını da tanımlayabilirsiniz. Örneğin:
12345678910111213141516171819202122232425262728293031323334353637
version: '3.8'
services:
app:
image: php:8.2-apache
ports:
[list]
[*]"8080:80"
[/list]
volumes:
[list]
[*]./src:/var/www/html
[/list]
environment:
[list]
[*]APACHE_DOCUMENT_ROOT=/var/www/html
[/list]
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: mydb
MYSQL_USER: user
MYSQL_PASSWORD: userpass
ports:
[list]
[*]"3306:3306"
[/list]
volumes:
[list]
[*]db_data:/var/lib/mysql
[/list]
volumes:
db_data:
Bu yapılandırmada,
app servisi PHP ve Apache içeriğine sahip,
src klasörünüzde geliştirdiğiniz PHP dosyaları otomatik olarak sunucuya bağlanır.
db servisi ise MySQL veritabanını temsil eder, veriler ise kalıcı olarak
db_data isimli volume'da saklanır.
İşte bu temel yapı ile, terminalde
docker-compose up -d komutunu çalıştırarak ortamınızı başlatabilirsiniz. Bu işlem, PHP ortamını ve veritabanını otomatik olarak kurar ve başlatır. Geliştirme sırasında,
src klasöründeki PHP kodlarınızı düzenledikçe, tarayıcıda
http://localhost:8080 adresinden sonucu görebilirsiniz.
Son olarak, bu yapılandırmayı ihtiyaçlarınıza göre özelleştirebilir, farklı PHP sürümleri veya ek servisler ekleyebilirsiniz. Bu sayede, hem lokal geliştirme hem de test ortamlarınızı hızlıca ve güvenli biçimde yönetebilirsiniz.