- Laravel
- Docker for containerization
- Mysql
- HTML5,CSS3,Javascript
Bir laravel projesini sanallaştırma teknolojilerini kullanarak nasıl ayağa kaldırırız?
Bu projede bir tane docker composer oluşturup bir container'da web sunucusu olarak ngnix, bir başka container'da db olarak mysql, bir başka container'da da uygulamamız'ın koşmasını hedefliyoruz.Sonuç olarak projemizde docker composer kullanarak toplam 3 tane ayrı container kullanmış olacağız ve bunlar bir birleri ile etkilşim halinde olmuş olacaklar.
Aşağıdaki komut satırı ile laravel kütüphanesini Projemize clone edelim.
- $ git clone https://github.com/laravel/laravel.git Dockerizing-laravel-App
Composer'ı kullanabilmek için projemizin ana dizininde kurulumu yapalım.
- $ cd ~/laravel-app
- $ docker run --rm -v $(pwd):/app composer install
Projemizde kullacağımız image 'leri tanımlamak için Docker-Compose dosyası oluşturalım.
- $ nano ~/laravel-app/docker-compose.yml
Projemizde kullanmamız gereken 3 tane container var.Bu container'ları oluşturucağımız docker-compose.yml dosyasında tanımlayıp sonra build edeceğiz.Eğer bir den fazla container kullanmak istiyorsak compose kullanılmalıdır.Eğer sadece bir tane container kullacaksak Dockerfile da tanımlamaları yapmak yeterli olacaktır.
Docker ayağa kalkacağı zaman proje path'inin belirlenmesi ,sistem paketlerinin güncellenmesi,Composer'ın kurulumu,cache 'in temizlenmesi projedeki dosyaların root izni olmadan yürütülmesi için gerekli tanımlamaların ve yetkilerin verildiği dosyadır.
Aslında Dockerfile içersinde oluşturduğum her bir component(mysql,apache,ngnix..) Dockerfile derlendikten sonra adı,id'si gibi özellikleri olan birer image 'dir.
- $ mkdir ~/Dockerizing-Laravel-App-On-Ubuntu/php
Proje dizinine dosya upload etmek için izin verilen maximum boyutlar set edilmiştir.
-
nano ~/laravel-app/php/local.ini
upload_max_filesize=40M; post_max_size=40M
İlk önce /nginx/conf.d dizinini oluşturalım.
- $ mkdir -p ~/Dockerizing-Laravel-App-On-Ubuntu/nginx/conf.d
Bu dizinin altına nginx web server'ı yapılandırmak için app.conf dosyasını oluşturdum.
- $ nano ~/laravel-app/nginx/conf.d/app.conf
Mysql dizinini oluşturalım.
- $ mkdir ~/laravel-app/mysql
Bu dizinin altına mysql'i yapılandırmak my.cnf dosyasını oluşturalım.
Eğer projenizde docker-compose 'ı ilk kez build ediyorsanız bu biraz zaman alıcaktır.
- $ docker-compose up -d
- $ docker container list //Containerları listeleme
- $ docker image list //İmageleri listeleme
Uygulamamız oluşturmuş olduğumuz 3 tane container ile etkileşim halinde çalışıyor.
Oluşturuduğumuz her container'ın birer ip adresi vardır.Bu ip adresiyle birlikte sannallaştırdığımız sunuculara 22 portu ile ssh bağlantısı kurabiliriz.Ancak bu noktada bir sanal switch oluşturulup bu sanal switch üzerinden ssh yapılmalıdır.
Sunucuda root iken containerlara aşağıdaki komut satırı ile root olabiliriz.
- $ docker-compose exec db bash
Burada db sanal sunucuların isimleri aslında.Eğer sadece uygulamanın koştuğu sanal sunucuya bağlanmak istersek
- $ doceker-compose exec app bash
yazmamız yeterli olacaktır.