Vagrant vs Docker: WordPress geliştirme için hangisi daha iyi?


Docker sahneye çıkmadan önce Vagrant, makinenizden bağımsız olarak yapılandırılabilen ve bir ekiple paylaşılabilen geliştirme ortamları oluşturmak için başvurulan çözümdü. Yazılımı doğrudan yerel makinenize yüklemek yerine sanallaştırmayı kullanmanın birçok faydası vardır (örneğin MAMP'ın yaptığı gibi):

  • Yazılım yığınları, üzerinde çalıştığınız makineden tamamen bağımsızdır.
  • Yazılım yığınları diğer kişilerle paylaşılabilir ve kolaylıkla otomatik olarak yeniden üretilebilir.
  • Ortamlar gerektiği gibi başlatılabilir ve durdurulabilir.
  • Barındırma ortamları geçici hale gelir ve artık kullanışlı olmadığında atılabilir.
  • Çok zaman kazandırır.

Bu günlerde Docker, genel olarak geliştirme ortamlarını ve devop'ları sanallaştırmak için fiili çözüm haline geldi. Docker, kod ve bağımlılıkları birlikte paketlemek için kapsayıcıları kullanarak sanal makinelerden temelde farklı bir şekilde çalışır. Bu yazıda, Vagrant ve Docker arasındaki farka bakacağız ve her birinde bir WordPress geliştirme ortamının nasıl kurulacağını göstereceğiz.

Vagrant vs Docker – Üst Düzey Karşılaştırma

Vagrant, Docker'dan çok daha basit bir mimari kullanır. Ana makineden bağımsız bir sanal ortam çalıştırmak için sanal makineleri (VM'ler) kullanır. Bu, VirtualBox veya VMware gibi "sanallaştırma" adı verilen yazılımlar kullanılarak yapılır. Her ortamın kendi sanal makinesi vardır ve bir Vagrantfile kullanılarak yapılandırılır. Vagrantfile , Vagrant'a sanal makineyi nasıl kuracağını ve ortamı sağlamak için hangi komut dosyalarının çalıştırılması gerektiğini söyler.

Bu yaklaşımın dezavantajı, her sanal makinenin yalnızca uygulamanızı ve tüm kitaplıklarını değil, aynı zamanda onlarca GB boyutunda olabilecek tüm konuk işletim sistemini de içermesidir. Ayrıca önyükleme yapmak için yavaş olabilirler.

Ancak Docker, uygulamanızı ve tüm bağımlılıklarını içeren ancak çekirdeği (işletim sistemi) diğer kapsayıcılarla paylaşan "kapsayıcılar" kullanır. Kapsayıcılar, ana bilgisayar işletim sisteminde yalıtılmış işlemler olarak çalışır ancak belirli bir altyapıya bağlı değildir (macOS, Windows, Linux vb. üzerinde çalışabilirler). Konteynerler, sanal makinelerden çok daha az yer kaplama eğilimindedir ve normalde onlarca GB yerine onlarca MB boyutundadır.

Docker'ı bir süredir kullanmadıysanız, bir sanal makineyi Virtualbox aracılığıyla çalıştırmak için artık Docker Toolbox'ı yüklemeniz gerekmediğine dikkat etmeniz gerekir. Docker artık HyperKit (macOS) ve Hyper-V (Windows) kullanarak yerel olarak çalışıyor, bu da onu bağımsız bir sanal makine kurmak ve bu makineye bağlanmaktan çok daha hızlı ve daha kolay hale getiriyor.

Tüm bunların sonucu nedir?

  • Vagrant'ın anlaşılması ve çalıştırılması daha kolaydır, ancak kaynak açısından çok yoğun olabilir (RAM ve disk alanı açısından).
  • Docker'ın mimarisini anlamak ve kurmak ve çalıştırmak daha zor olabilir, ancak çok daha hızlıdır, çok daha az CPU ve RAM kullanır ve potansiyel olarak Vagrant VM'lerden çok daha az alan kullanır.

Vagrant'ı kurmak

Hem Vagrant hem de Docker ekosistemleriyle ilgili harika şeylerden biri, ortamların komut dosyası oluşturması ve paylaşması kolay olduğu için, kullanıma hazır bir sürü harika Vagrant "kutusu" ve Docker görüntüsü olmasıdır.

Bu durumda, WordPress geliştirme için özel olarak tasarlanmış popüler bir Vagrant yapılandırması olan Varying Vagrant Vagrants (VVV) adlı açık kaynaklı bir proje kullanacağız. Başlamadan önce, makinenizde hem VirtualBox hem de Vagrant kurulu olmalıdır. VVV ayrıca, tarayıcınızda sağlanan VVV etki alanlarına erişmek için hosts dosyanızı otomatik olarak güncelleyen vagrant-hostsupdater eklentisini yüklemenizi önerir.

Artık tüm önkoşulları yüklediğimize göre, VVV deposunu yerel bir dizine klonlayalım:

 $ git clone -b master git://github.com/Varying-Vagrant-Vagrants/VVV.git ~/vagrant-local

O zaman sadece dizine cd girmemiz ve vagrant up çalıştırmamız gerekiyor:

 $ cd ~/vagrant-local && vagrant up

Vagrant'ın gerekli dosyaları indirmesi, sanal makineyi kurması ve sağlaması biraz zaman alacaktır (not: “vagrant-hostsupdater” eklentisini kullanıyorsanız parolanız istenebilir). VVV'nin doğru şekilde kurulduğunu doğrulamak için http://vvv.test adresini ziyaret edin. Bir VVV kontrol paneli sayfası görmelisiniz.

VVV, geliştirme için kullanmanız için iki varsayılan WordPress sitesi kurar, http://one.wordpress.test ve http://two.wordpress.test. Temalarınızı ve eklentilerinizi ilgili klasöre koyarak bu siteleri geliştirme için kullanabilirsiniz (örn. www/wordpress-one/public_html/wp-content ). Veya dilerseniz yeni bir özel site ekleyebilirsiniz.

VVV WordPress sitelerinin nasıl kurulacağı ve kullanılacağı hakkında daha fazla bilgi için VVV belgelerini okumanızı tavsiye ederim.


Docker'ı kurma

Docker'ı kullanmaya başlamak için önce, Docker motoru, Docker komut satırı, Docker Compose vb. dahil olmak üzere yerel makinenizde docker kapsayıcılarını çalıştırmak için ihtiyacınız olan her şeyi sağlayan Docker Desktop'ı yüklemeniz gerekir.

Ardından, WordPress sitemizi çalışır duruma getirmek için WordPress ve MySQL için resmi Docker görüntülerini kullanacağız. WordPress'i (Apache ve PHP'yi içeren) bir kapsayıcıda çalıştıracağız ve MySQL'i veritabanı olarak farklı bir kapsayıcıda çalıştıracağız.

İlk olarak, konteynerlerimizin birbirleriyle iletişim kurmak için kullanabileceği bir liman işçisi ağı oluşturmamız gerekiyor:

 docker network create wordpress-network

Ardından, veritabanımız için MySQL kapsayıcısını oluşturun:

 $ docker run --name wordpressdb \ --network wordpress-network \ -e MYSQL_ROOT_PASSWORD=password \ -d mysql:5.7

Bu bayrakların her birinin ayrıntılı olarak ne yaptığını görmek için liman işçisi çalıştırma referansına bir göz atabilirsiniz, ancak işte kısa bir özet:

  • Kapsayıcımıza daha sonra bağlanabilmemiz için bir --name veriyoruz (bunu belirtmezsek rastgele bir ad oluşturulacaktı).
  • Az önce oluşturduğumuz wordpress-network kullanmasını söylüyoruz.
  • Container tarafından kullanılacak bir -e ortam değişkeni belirtiyoruz. Bu, yapılandırma bilgilerini bir kaba aktarmanın yaygın bir yoludur (bu durumda MySQL kök parolasını ayarlamak).
  • Container'a müstakil modda çalışmasını söylüyoruz.
  • Son olarak kullanmak istediğimiz image:version belirliyoruz. Görüntü yerel olarak mevcut değilse, indirilecektir.

Son olarak, bir WordPress kapsayıcı oluşturalım:

 $ docker run --name wordpress \ --network wordpress-network \ -e WORDPRESS_DB_HOST=wordpressdb \ -e WORDPRESS_DB_PASSWORD=password \ -p 80:80 \ -d wordpress

Burada yaptığımız ve yukarıdaki MySQL kapsayıcı için yapmadığımız bir şey, ana makinemizdeki 80 numaralı bağlantı noktasının Docker ağındaki 80 numaralı bağlantı noktasını (bu kapsayıcı olacaktır) gösterecek şekilde bağlantı noktaları kurmamızdır.

Aşağıdakileri çalıştırarak konteynerlerimizin durumunu kontrol edebiliriz:

 $ docker ps

Şimdi http://localhost'u ( 80 numaralı bağlantı noktası) ziyaret ettiğinizde bir WordPress kurulum ekranı görmelisiniz.

WordPress temalarınızı veya eklentilerinizi geliştirmeye başlamak için, kapsayıcıyı çalıştırırken bir -v / --volume bayrağı ileterek bunları wordpress kapsayıcısına bir birim olarak ekleyebilirsiniz:

 $ docker run --name wordpress \ --network wordpress-network \ -e WORDPRESS_DB_HOST=wordpressdb \ -e WORDPRESS_DB_PASSWORD=password \ -p 80:80 \ -v ~/path/to/my-plugin:/var/www/html/wp-content/plugins/my-plugin \ -d wordpress

Şimdi eklentiyi WordPress yöneticisinin içinde görmelisiniz.

Docker Compose'u Kullanma

Komutları yukarıda yaptığımız gibi çalıştırmak oldukça zahmetli ve insan hatasına açık olabilir. Docker Compose, tüm ortam yapımızı tanımlayabileceğimiz ve tek bir komutla çalıştırabileceğimiz tek bir dosya belirlememize izin verdiği için bize yardımcı olabilir (tıpkı bir Vagrantfile çalışması gibi).

Bir docker-compose.yml dosyası oluşturalım:

 version: '3.1' services: wordpress: image: wordpress restart: always ports: - 80:80 environment: WORDPRESS_DB_HOST: wordpressdb WORDPRESS_DB_PASSWORD: password volumes: - wordpress:/var/www/html wordpressdb: image: mysql:5.7 restart: always environment: MYSQL_ROOT_PASSWORD: password volumes: - database:/var/lib/mysql volumes: wordpress: database:

Compose file referansını kullanarak yukarıdaki komutları bir yml dosyasına nasıl kopyaladığımızı görebilirsiniz. Yukarıdaki komutlardan iki fark şunlardır:

  • Docker Compose otomatik olarak bir ağ oluşturacağı için bir ağ belirtmemize gerek yok.
  • Konteynerler durdurulduğunda bile ilgili konteyner verilerinin devam etmesi için wordpress ve database hacimleri belirliyoruz.

Docker-compose dosyasını çalıştırmak için:

 $ docker-compose up -d

Şimdi, http://localhost'u ziyaret ettiğinizde tekrar bir WordPress kurulum ekranı görmelisiniz. Daha önce olduğu gibi, geliştirmek istediğiniz belirli temalar ve eklentiler için ciltler ekleyebiliriz:

 volumes: - wordpress:/var/www/html - ./path/to/my-plugin:/var/www/html/wp-content/plugins/my-plugin

Peki Hangisi Daha İyi?

Bu nitelikteki her şeyde olduğu gibi, “doğru” ve “yanlış”, “daha ​​iyi” veya “daha ​​kötü” yoktur. Tamamen nasıl kullanmak istediğinize ve ne ile rahat hissettiğinize bağlıdır. Ben şahsen Docker'ı birkaç yıldır kullanıyorum ve geliştirme çalışmalarım için düzenli olarak kullanacak kadar rahat hissediyorum.

Geliştirme ortamınız için ne kullanıyorsunuz? Vagrant, Docker veya başka bir şeyi mi tercih edersiniz?

Copyright statement: Unless otherwise noted, this article is Collected from the Internet, please keep the source of the article when reprinting.

Check Also

Divi's Theme Builder ile Özel Global Başlık Nasıl Oluşturulur

Artık Tema Oluşturucu burada olduğuna göre, web sitenizi A'dan Z'ye kurmanıza yardımcı olacak yeni eğitimlere dalmak için sabırsızlanıyoruz. Buna Divi'nin yerleşik seçeneğini kullanarak özel başlıklar oluşturma da dahildir. Bu eğitimde Divi's Theme Builder'ı kullanarak global bir başlık oluşturmaya odaklanacağız. Bu sayfaya veya gönderiye farklı bir başlık atamadıysanız, web sitenizin her yerinde genel bir başlık görünecektir.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir