Merhabalar bu yazımda, local bilgisayarımızda bir proje geliştirmek istediğimizde ya da hali hazırdaki bir projeyi bilgisayarımıza indirip geliştirme yapacağımız zaman ilk sorun; projede kullanacağımız teknolojiler için local ortamı hazırlamaktır. Bu iş basit gibi görünse de ne yazık ki sancılı bir süreçtir. Ayrıca birden fazla farklı altyapıdaki projelerde eş zamanlı çalışıyorsak durum daha da içinden çıkılmaz durama gelebiliyor.

Peki elimizdeki çözümler neler?

  1. localhost programları:  wamp,mamp ,xampp,laragon vs.
  2.  işletim sistemine göre stack : LEMP,LAMP,MEAN
  3.  Sanallaştırma: vagrant,virtualbox,vmware,valet vs.
  4. docker

Yazımızın konusu, php frameworkleri ve node js tabanlı uygulamalar için hızlı ve etkili biçimde geliştirme ortamı hazırlamaya yarayan bir docker aracı olan devilbox.

Devilbox ile neler yapabiliriz ?

    Temel docker bilgisiyle hızlı ve bilgisayarınızı yormayan geliştirme ortamınızı oluşturabilirsiniz. Hem de sınırsız sayıda uygulamalar için ayrı ayrı ortamlar.

 Temel docker bilgisiyle hızlı ve bilgisayarınızı yormayan geliştirme ortamınızı oluşturabilirsiniz. Hem de sınırsız sayıda uygulamalar için ayrı ayrı ortamlar.

Özellikler:

  • sunucu, programlama dili parametrelerimizin istenilen versiyonlarını hiçbir ayar yapmadan kullanabiliriz. Ör: PHP 7.2 ve mysql 5.6 gerek bize sadece bu versiyonları aktif hale getirmek yeterli.
  • Docker ortamında çalışacağımız için sistem kaynaklarımızı asgari düzeyde kullanarak bilgisayarımızı sömürmez.
  • otomatik DNS yapılandırması vardır, sanal domainler üretmek kolaydır.
  • php için gerekli modülleri aktif ya da pasif yapmak kolaydır
  • görsel bir arayüz kullanmak isteyenlere bu imkanı sunar.
  • farklı veritabanları için gerekli admin panelleri yüklü gelir.ör: phpmyadmin,pgadmin vs.
  • neredeyse her php frameworkü için altyapı sunar.
  • anlaşılır ve basit bir dökümantasyonu vardır.
  • reverse proxy imkanı sunar.
  • custom (özelleştirilmiş) konteynır yapmamıza ve de hazır olanlarını kullanmamıza imkan sağlar.
  • ayrıca 3. parti uygulama olarak devilbox cli hizmeti ve nginx acme uygulamasıyla kolay biçimde ssl sertifikası üretmemizi sağlar.

Sıra geldi ilk uygulamamızı yapmaya:

NOT: bu yazıda işletim sistemi olarak Mac OS  kullanmaktayım. Ancak ufak işlemler hariç her işletim sistemi için aynı sayılabilir. Bunu dikkate alarak denemenizi öneririm

1-GEREKLİ YAZILIMLAR:

2-BİLİNMESİ GEREKEN KOMUTLAR

3-DEVILBOX REPOSUNU İNDİRMEK

  • Terminalden istediğiniz dizine( ben analizine eklemeyi tercih ettim) repoyu Clone edin.
  • git clone https://github.com/cytopia/devilbox
  • İndirme işlemi tamamlanınca Devilbox klasörüne gidin ve şu komutu vererek .env dosyasını oluşturun.
  • cp env-example .env
  • Daha sonra .env dosyasını açarak, PHP_SERVER satırını aratın ve istediğiniz php sürümünü yorum satırından çıkarın. Diğerlerini yorum satırı yapın ve öyle kalsın.Aynı şekilde veritabanı,cache’i , sunucunuzu da bu şekilde ayarlayın.Eğer mac kullanıcısıysanız UID VE GID değerleri linuxdan farklı olabiliyor bunu kontrol etmek için

  • id -u ve  id -g komutlarıyla terminalden öğrenip .env dosyasında değiştirmeniz gerekli.

Yüklediğimiz Laravel projesinin, çalışacağı dizin “public” olacağından Devilbox ‘ ın env dosyasında “HTTPD_DOCROOT_DIR” kısmını “public” olarak değiştiriyoruz.

  • Mac de performans için  MOUNT_OPTIONS=,cached bu bölümü aktif hale getirelim.

  4-DEVILBOX ‘I AYAĞA KALDIRMA

  • Evet buraya kadar sorunsuz geldiysek artık keyifli tarafı başlıyor demektir.Öncelikle Docker uygulamasını çalıştırın ve görev çubuğunuzdaki Docker simgesini tıklayarak “Docker  desktop is runnig” olduğunu teyit edin.

  • Terminale şu komutu yazarak belirlediğimiz konteynırları ayağa kaldıralım.
  • docker-compose up -d php mysql
  • Bu komutla php, mysql ve standart olarak seçilmiş Nginx konteynırları önce build edilip sonrada ayağa kalkacak.
  • Bu işlem biraz uzun sürebilir gerekli paketlerin kurulumu yapılır. İşlem tamamlandığında çalışan konteynırları görmek için şu komutu yazın:
  • docker-compose ps
  • Terminal çıktımız bu şekilde görünüyorsa konteynırlarımız başarıyla ayağa kalkmış demektir.

  • Tarayıcımızı açıp localhost yazarsak karşımıza devilbox’ ın yönetim paneli gelecektir.

  • Bu ekrandan birçok bilgiyi bulabilir ya da bir çok işlemi gerçekleştirebilirsiniz.

5-LARAVEL PROJESİ KURULUMU

  • Öncelikle projemizi kurmadan önce yapacağımız bir kaç işlem var. Ben local projelerimi Desktop/project/ dizini altında tutmak istiyorum. Devilbox da projelerimizin localdeki konumu, devilbox/data/www/ dizini altındadır. Dilerseniz projelerinizi bu dizin altında saklayabilirsiniz yahut benim gibi farklı konumlarda da kullanabilirsiniz. Bunu yapmak için şu komutu yazalım.

ln -s /Users/username/Desktop/projects /Users/username/devilbox/data/www

  • Böylece lokalde devilboxın standart dizininde değil kendi belirlediğim dizinde proje dosyalarını tutabileceğiz.
  • Laravel projemizi kurmak için /Users/username/devilbox dizinine gidelim ve linux ve mac kullananlar “Shell.sh” , windows kullananlarsa “Shell.bat” uygulamasını çalıştırarak konteynırın içine giriş yapalım.
  • ./shell.sh komutunu çalıştırdığımızda aşağıdaki ekranı görüyorsak başarılı bir şekilde konteynıra giriş yapmışız demektir.

  • laravel new example komutuyla example adında Laravel projemizi kurmaya başlayalım.
  • Kurulum tamamlandıktan sonra tarayıcıya localhost yazıp devilbox yönetim panelinden virtual hosts sekmesine göz atarsanız ,projenin kök dizini ve hata mesajı göreceksiniz. Bilgisayarımızın hosts dosyasına, projeadı.loc olarak 127.0.0.1 ip adresiyle kaydetmemiz gerek. Bunun için yine işletim sistemlerinde farklılık göstereceğini belirterek şunu yapmalıyız:
  • sudo nano /etc/hosts
  • Bu komutla hosts dosyamızı açıp, aşağıdakini ekledikten sonra kaydedip kapatıyoruz.
  • 127.0.0.1 example.loc
  • Virtual hosts sekmesini yenilersek bu sefer hata mesajı yerine “ok” yazdığını göreceğiz.

Son olarak da tarayıcımızda “example.loc” açtığımızda artık Laravel projemizin anasayfasını göreceğiz.