Tasdemir
- Laragon, Wamp, Xampp gibi uygulamalar programları direkt işletim sisteminize kurar. Windows kullanıyorsanız Windows sürümünü kurar, Windows'a göre çalışır, Windows'a göre ayar yaptırır ve bunlar arka planda çalışır, port işgal eder. Bilgisayarınıza gereksiz bir sürü dosya atar, onu bir nevi ele geçirir, bilgisayarınızda istediğiniz değişiklikleri yapmanıza engel olabilir.
- Her uygulamanın Windows sürümü yoktur, bazıları özellikle linux ister.
- Sizin uygulamanın çalışacağı ortam (sunucu) genellikle bir linux distrosudur. Dosya yollarından tutun, yeni satır karakterine, dosya izinlerine kadar farklılıklar vardır. O yüzden sizin Windows bilgisayarınızda çalışan sunucuda çalışmayabilir.
- Sizin bilgisayarınızda MySQL 8.0 yüklüdür ama sunucuda 5.7 vardır. Bilgisayarınızda PostgreSQL 15 vardır ama sunucudaki 14'dür. Bazı farklardan dolayı sizde çalışan yine sunucuda çalışmayacaktır.
- Bilgisayarınızdaki iki farklı proje iki farklı ortam, aynı uygulamanın iki farklı versiyonunu istiyordur. Her ikisini aynı anda kurmak her zaman mümkün değildir.
- Yeni, başka bir bilgisayara geçtiğinizde ya da sizinle çalışacak başka bir ekip arkadaşı geldiğinde aynı işlemlerin aynı şekilde tekrar yapılması gerekecektir.
Bu ve bunun gibi bir çok sebepten dolayı geliştirme ortamını oluşturması, kaydedilmesi, paylaşılması hep bir sorun olmuştur. Docker burada buna çözüm sunar. Elbette prod ortamında da faydaları var ama onlar daha teknik konular sanırım.
Sizin projenizin bağımlılıkları vardır. Mesela Laravel için konuşursak bunlar bir linux distrosu, Apache ya da Ngnix gibi bir web sunucusu, PHP, MySQL yada PostgreSQL gibi bir veri tabanı, Redis vs... Docker dünyasında bunların her biri versiyon versiyon paketlenmiştir. Bunlara image diyoruz. Mesela MySQL'in 8.1.0 versiyonunun image'ını docker pull mysql:8.1.0
komutu ile bilgisayarınıza çekebilirsiniz. Tüm bağımlılıklar böyle image olarak çekilir. Bu image'ları çalıştırdığınızda ise aslında image çalışmaz, onun bir örneği (instance) çalışır. Ona konteyner diyoruz. Bir image birden fazla konteyner de çalıştırabilir. Bu konteynerler (Ngnix, PHP, MySQL, Redis...) çalışırken izole de çalışabilirler birbirleriyle de haberleşebilirler. Laravel bunların hepsine ihtiyaç duyduğu için bunların birlikte, bir arada çalışmaları gerekir. Burada Docker Compose devreye giriyor. Compose ile çalıştırmak istediğiniz konteynerleri ayarlıyorsunuz, birbirleri ile haberleşebilmelerini sağlıyorsunuz ve dağıtımını mümkün kılıyorsunuz. Docker Compose yaml dosyaları ile ayarlanıyor. Mesela yeni bir bilgisayara geçtiniz ya da aynı projeye yeni bir arkadaş dahil oldu. Bilgisayarda Docker yüklü ise yaml dosyasını alıp docker-compose up -d
yapmanız yeterli. Ayarlara göre gerekli image'lar indirilecek ve geliştirme ortamı ayağa kalkacak.
Bunun bir güzel tarafı ise bu işlemi canlı ortamda da yapıp sunucuda ya da clouda aynısını gönderip hemen aynısından bir de prod ortam kurabilirsiniz. Böylece bilgisayarınız ve prod ortamı eşit olduğu için ortam farklılıklarından dolayı hata almayacaksınız.
Yazılım sektöründe şu an GIT gibi Docker konusunda da bilgi sahibi olmalısınız. Bu üstteki giriş bilgilerinden yola çıkarak araştırmalarınıza başlayabilirsiniz.