Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?

Selamlar iyi yıllar herkese, Laravel 8 ile sail geldi hayatımıza artık 🙂
Bu sail & docker ile multi site nasıl ayağa kaldırıyoruz homestead bu superdi
sites:
- map: homestead.test
to: /home/vagrant/project1/public
- map: another.test
to: /home/vagrant/project2/public

Sail ve docker ile bu nasıl olucak bilen varmı yardımcı olurusunuz benim gibi systemi güncel tutmak isteyenlere faydalı olur

Bu konudaki fikirlerimde su sekilde :
Laravel 8 kurulumunda dokuman içerisinden homestead ile ilgili detaylar kaldırmışlar yani end of life oldu bence homestead çok iyi bir olaydı neden bunun yerine docker geldi, bilmiyorum
Homestead bir geliştiricinin hem linux öğrenmesi içerisinde herseyin olması multi o/s Windows,Mac, Linux içerisinde. çalışması herseyin olması yedeklemeler vs. saymak ile bitmeyen güzellikleri vardı şimdi olsun ya gecelerim dedim ama Sail ve docker kurdum dedimki ikinci projeyi kurayım patladım docker config de Multi site nasıl yapılıyor hiç bir fikrim yok aslında container yapısına gecmek güzel fikir sanırım biraz daha bilgilenmek ve tecrübeler edinmek gerekiyor geliştirici tarafında

    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.

      mgsmus

      mgsmus

      Docker image oluşturduğumuzda Laravel projemizi de buna ekleyip gönderiyoruz ve sunucuda gerekli bağımlılıklar yüklendikten sonra composer install, migration komutlarımız vs şeklinde belirlediğimiz tüm komutları çalıştırıyor şeklinde anladım ben. Doğru mudur hocam ?

        coder2 Evet, önce Dockerfile sonra dediğiniz işlemler. İşletim sisteminin güncellenmesinden PHP kurulumuna, reponuzun klonlanmasından servislerin başlatılmasına kadar her şey sıfırdan yapılıyor.

        Öncelikle Çok ama çok teşekkür ederim @mgsmus
        Emek vermişsiniz detaylı bir şekilde de yazmışsınız ne diyeceğimi şaşırdım gercekten harika oldu benim için kanser bir konu ve bir türlü kavrayamayamadım 🙂 docker nedir nasıl çalışır ne iş yapar biliyorum fakat uygulamak ayrı 🙂

        Şimdi olayı tam olarak kavradım, homestead ile geliştirme ortamında çok rahattım ama zamana ayak uydurmak update etmek lazım kendimizi docker a gecme zamanı yavaştan geldi de gecti bile 🙂 Laravel de

        dediğiniz gibi aynı anda iki yerde develop yapamıyoruz aslında
        tekrar. çok teşekkür ediyorum
        saygılar