hanifeoglu
Homestead
Homestead kaldırılmadı, end of life ile ilgili bir durum yok:
https://laravel.com/docs/8.x/homestead
Docker
Docker sadece geliştirme değil aynı zamanda production ve CI/CD aşamasında da kullanılan bir teknoloji. Uygulamanız imaja dönüştürülür, Docker Hub'a gönderilir, hooklar ile push yapıldığı bildirilip sunucu tarafında pull edilir ve orada baştan ayağa kaldırılır. Bu şekilde bir CI/CD kurduğunuzda örneğin her bir commit sonrası bu işlem tekrarlanır.
CI/CD
CI/CD aşamasında kullanımı ile de örneğin Bitbucket'da pipelines kullandığınızda, push sonrası kendi sunucunuza SSH ile bağlanıp bir işlem yaptırmak istediğinizde Bitbucker bir Docker ayağa kaldırıyor. İçinde sanırım Alpine Linux var ve onun içinden SSH ile sizin sunucunuza bağlanarak verdiğiniz komutları çalıştırıyor.
Multi Site
Multi siteye gerek yok çünkü her bir site yani her bir uygulama kendi başına ayağa kalkar fakat geliştirme ortamı için Ngnix ya da Apache gibi bir web server ile virtual host kullanarak multi site hazırlanabilir, yani Homestead ya da klasik Xampp gibi ortamları Docker ile oluşturabilirsiniz. Bunun için hazır olanlar da var, örneğin:
http://devilbox.org/ (Ben bunu kullanıyorum)
https://laradock.io/
Laravel Sail
Docker imajlarını kendiniz toplayarak kendi geliştirme ortamınızı da oluşturabilirsiniz. Bunun için elbette Docker nasıl çalışıyor vs öğrenmeniz gerekiyor. İşte burada isterseniz Laravel Sail kullanabilirsiniz. Laravel Sail bu işi sizin için yapmış yani ayarları otomatik olan bir geliştirme ortamı sunmuş. İçinde PHP 7.4 ya da 8.0, MySQL ve Redis var. Diğer gereksinimler de (supervizor gibi) hazır geliyor. sail up
diyorsunuz, uygulamanız ayağa kalkıyor. Başka bir uygulama varsa, onun geliştirmesine geçecekseniz diğerini durdurup yeni olanın klasörüne giriyorsunuz ve tekrar sail up
diyorsunuz.
Devilbox
Docker'ın en güzel yanlarından bir tanesi mesela benim ilgilendiğim eski projeler de var. Bunları artık güncellemiyorum. Bazıları PHP 7.0 bazıları PHP 7.1 bazıları PHP 7.3 istiyor. Kimisinde MySQL var kimisinde PostgreSQL var. Devilbox ile basit bir ortam değiştirme hazırladım ve bash script oluşturdum:
start-71.sh:
#!/bin/sh
rm .env
ln -s .env-php71 .env
docker-compose stop
docker-compose rm -f
docker-compose up httpd php bind mysql
start-74.sh:
#!/bin/sh
rm .env
ln -s .env-php74 .env
docker-compose stop
docker-compose rm -f
docker-compose up httpd php bind mysql redis
./start-71.sh
ile başlattığımda Apache 2.4, MySQL 5.7, PHP 7.1 ile ayağa kalkıyor. ./start-74.sh
ile başlattığımda ise Apache 2.4, MySQL 8, PHP 7.4 ve Redis 5 ile ayağa kalkıyor. Bunun gibi istediğim kadar geliştirme ortamı oluşturabiliyorum.
Linux
docker-compose exec
ile konteyner içerisinde shell'e girebiliyorsunuz. Bu aşamada Homestead ile aynı zaten.
Yedekleme
Docker kullanan ortamlarda sadece Alpine gibi küçük bir linux ve php-fpm oluyor genelde. İçerisinde bir disk alanı, MySQL vs... yok. O yüzden MySQL ayrı bir yerde (remote yani) Redis ayrı bir yerde size ait dosyalar ayrı bir yerde (S3) oluyor. Bu hem farklı yedekleme stratejileri kurmanızı sağlıyor hem de scaling yapmanızın önünü açıyor. Bunların hepsini sunan yerler ise duymuşsunuzdur Amazon AWS, Microsoft Azure vb cloud servisler. Geliştirme ortamında ise dump ile db yedeklerini alıyorsunuz, yüklenen dosyalar ise bilgisayarınızda mount edilen klasörde zaten.