Docker ile Yerel WordPress Geliştirme


Mutlu yıllar! Umarım tatilden keyif almışsınızdır (çalışmak zorunda olmadığınızı varsayarak) ve şimdi öğrenmeye hevesli olarak geri döndünüz. Sizin için harika bir eğitimle geri döndüm: WordPress geliştirme için Docker nasıl kullanılır. Aslında birkaç gün önce Twitter aracılığıyla (Katalanca) duyurdum:

Kısa bir hikaye ile başlayayım: Bir WordPress geliştiricisi olarak yolculuğuma LAMP (Linux + Apache + MySQL + PHP) kullanarak başladım. Ne yazık ki, aynı anda birden fazla proje üzerinde çalışırken, hepsinin aynı sunucuyu, aynı veritabanını kullandığı için kurulumun bir karmaşa olduğunu hemen fark ettim… Sonra Vagrant'a (özellikle VVV), bir ortam olan Vagrant'a taşındım. WordPress geliştirme için tasarlandı, ancak baş belasıydı: 6 yaşındaki bilgisayarım birden fazla Sanal Kutu örneğini çalıştırırken çok fazla sorun yaşadı ve her şey son derece yavaştı. Daha sonra Local by Flywheel'e geçmeye çalıştım çünkü Antonio çevreden çok keyif alıyor gibiydi… ama Linux'a hiç gelmedi! Benim için hızlı, güvenilir, kullanımı kolay bir seçenek yok muydu?

Sonunda, Docker hakkında daha fazla şey öğrenmem gerektiğine ve adını duyduğum bu aracın ihtiyaçlarımı karşılayıp karşılamayacağını görmem gerektiğine karar verdim. Docker hakkında da daha fazla bilgi edinmek ve bunu WordPress geliştirmelerinizde kullanmak istiyorsanız bu kılavuzu kaçırmayın – geliştirme ortamlarını nasıl hızlı ve verimli bir şekilde oluşturacağınızı öğrenin.

Liman işçisi

Docker, "konteynerleştirme" olarak da bilinen işletim sistemi düzeyinde sanallaştırma gerçekleştiren bir bilgisayar programıdır. Bunun klasik LAMP kurulumuna kıyasla iki ana avantajı vardır:

  • konteynerler birbirinden izole edilir ve aralarındaki iletişim sınırlıdır, bu da güvenliği artırır
  • araçlar, kitaplıklar, yapılandırma dosyaları ve kapsayıcının çalışması gereken her şey kapsayıcının kendisindedir; bu, temiz ve düzenli bir kurulumumuz olacağı anlamına gelir – kapsayıcıyla işimiz bittiğinde, onu kaldırabiliriz ve her şey gitmiş olacak .

Bence Docker'ın diğer sanallaştırma yazılımlarına göre en büyük avantajı, varsayılan olarak kullandığı sanallaştırma ortamı: runC. Bu ortam, tüm kapsayıcıları ana bilgisayar işletim sisteminde çalıştırır (tam bir sanal makine çalıştırmak yerine), bu da işleri çok daha hızlı ve daha hafif hale getirir. Bu, ana bilgisayar (bilgisayarımız) ve misafirin (konteyner) çok sayıda kaynağı paylaşacağı ve her şeyin “eski” bir bilgisayarda bir cazibe gibi çalışacağı anlamına gelir.

Docker Kurulumu

Docker'ı Linux'a (Debian/Ubuntu) kurmak için aşağıdaki komutu çalıştırmanız yeterlidir:

Ekrandaki talimatları izleyin ve apt tamamlanana kadar bekleyin.

Docker kurulduktan sonra docker komutu ile kullanabiliriz. Docker ile ilgili tek sorun, onu sudo kullanarak yönetici ayrıcalıklarıyla çalıştırmanız gerekmesidir. Ama bunu çözebiliriz. docker sudo olmadan çalıştırmayı tercih ediyorsanız (ve bu nedenle parolanızı sık sık yazmaktan kaçınıyorsanız), kullanıcınızı docker grubuna ekleyin:

burada your-user açıkça Linux'taki kullanıcı adınızdır. BTW, bu değişikliği gerçekten uygulamak için oturumu kapatıp tekrar oturum açmanız gerekebilir.

Mac veya Windows'ta Docker Nasıl Kurulur

Mac veya Windows kullanıyorsanız Docker'ı da yükleyebilirsiniz. Sadece Docker'ın web sitesindeki talimatları izleyin:

  • Windows Kurulumu
  • Mac Kurulumu

Docker Nasıl Kullanılır

Artık Docker'ı kurduk ve kullanıma hazır hale getirdik, şimdi ona bir şans vermenin zamanı geldi. Dediğim gibi Docker, içerilen uygulamaları yönetmek için bir araçtır. Bir konteyner başlatmak istiyorsak, aşağıdaki komutu çalıştırmamız gerekiyor:

Örneğin, şu komutu deneyin:

Docker kapsayıcısında klasik Hello World'ü başlatmak için. Her şey beklendiği gibi çalıştıysa, önce terminalinizde şöyle bir şey göreceksiniz:

Bu bize bazı ilginç bilgiler veriyor. İlk olarak Docker, hello-world adlı bir resim aradı, ancak onu bulamadı. İkincisi, o resmi çevrimiçi bir resim deposunda aradı ve bu sefer başarılı oldu ve indirebildi. Ve bu Docker ile ilgili harika şeylerden biri: Docker kapsayıcıları olarak kullanabileceğimiz birkaç paketlenmiş uygulama içeren bir görüntü deposuna sahiptir (eklenti ve tema dizinleriyle WordPress'te sahip olduğumuza benzer).

Şimdi terminalimize dönersek, Hello World konteynerinin gerçek çıktısını görebiliriz:

Ve bu kadar! İlk Docker kapsayıcınızı zaten çalıştırdınız mı?

Şimdi aşağıdaki komutu yazarsanız:

hello-world görüntüsü kullanılarak oluşturulan konteyner Docker'ı göreceksiniz:

Kaldırmak için şunu yazın:

uygun CONTAINER ID yazdığınızdan emin olun.

Ve temelde Docker'ın hepsi bu kadar… O halde başka bir araca (Docker Compose) geçelim ve onu WordPress geliştiricileri olarak nasıl kullanacağımızı öğrenelim?

Docker Oluştur

Tahmin edebileceğiniz gibi, Docker'ın resim deposunda bir WordPress resmi mevcut. Sadece o resmi çekmemiz gerektiğini ve yeni bir WordPress sitesi başlatabileceğimizi düşünebilirsiniz, ancak bu aslında doğru değil:

  • Bir yandan, bu görüntü veritabanı sistemini içermiyor. Dolayısıyla, WordPress sitemizi başlatmak istiyorsak, MySQL'i bir yere kurmamız (veya bir MySQL konteyneri kullanmamız) gerekecek.
  • Öte yandan, WordPress görüntüsü bazı yapılandırma parametreleri gerektirir (örneğin, veritabanının nerede olduğu ve ona erişmek için kimlik bilgileri gibi). Bu yüzden örneği her çalıştırdığımızda, bu argümanları belirtmemiz gerekiyor.

docker komutunu tek başına kullanmak, özellikle birden fazla kapsayıcıyı aynı anda başlatmamız gerektiğinde ve bazıları diğerlerine bağlı olduğunda (WordPress'in yaptığı gibi) karmaşık olabilir. Neyse ki, ihtiyacımız olan tüm kapsayıcıları, birbirleriyle olan bağımlılıklarını ve özel kurulumlarını açıklamak için bir yapılandırma dosyası kullanan docker-compose adlı bir araç var.

Docker Compose'un yapılandırma dosyasının bulunacağı yeni bir dizin oluşturarak başlayalım. Örneğin, ~/docker/test oluşturun ve aşağıdaki içeriğe sahip docker-compose.yml adlı bir dosya ekleyin:

Bu dosyanın karmaşık görünebileceğini biliyorum, ama değil. Dikkatli bakın: dosya, WordPress'i çalıştırmamız gereken iki hizmeti (veya isterseniz kapsayıcıyı) tanımlar: mysql ve wordpress . İlki ( mysql ), ihtiyacımız olan görüntü (ki bu açıkça bir MySQL görüntüsü, sürüm 5.7'dir) ve bazı yapılandırma parametreleri hakkında bilgiler içerir. En alakalı olanı muhtemelen bağlantı noktası eşlemesidir (konuktaki 3306 ile eşleşen ana bilgisayarımızdaki 8081 bağlantı noktasını kullanarak veritabanına erişebileceğiz) ve veritabanı kurulumunun kendisidir (kullanıcı, parola vb.).

İkincisi WordPress'in kendisidir ( wordpress ) ve benzer bir yaklaşım izler. Burada Docker Compose'a WordPress'in sunucumuzdaki 8080 numaralı bağlantı noktası üzerinden erişilebilir olmasını istediğimizi söylüyoruz. Ayrıca WordPress'in diğer hizmete güvendiğini belirtiyoruz: mysql . Ve nihayet bazı ek yapılandırma parametreleri ekliyoruz (esas olarak, veritabanına erişmek için olanlar).

İşimiz bittiğinde dosyayı kaydedip çıkın ve aşağıdaki komutu yazın:

ve Docker, WordPress ve MySQL görüntülerini indirecek ve WordPress'imizi başlatacaktır.

Sadece birkaç dakika bekleyin ve bittiğinde web tarayıcınızla http://localhost:8080 gidin (burada kullandığımız bağlantı noktasının yapılandırma dosyasında belirttiğimiz bağlantı noktasıyla nasıl eşleştiğine dikkat edin) ve yeni WordPress sitenize bakın:

Docker Kapsayıcısına WordPress Kurulumu
Docker Kapsayıcısına WordPress Kurulumu.

Bu andan itibaren, yeni WordPress örnekleri oluşturmak istiyorsak, tartıştığımız adımları tekrarlamanız yeterli olacaktır. Yani ~/docker/ içinde yeni bir dizin oluşturacaksınız, docker-compose.yml dosyasını ekleyecek ve onu kuracaksınız. Bu yeni örnek için farklı bağlantı noktaları kullandığınızdan emin olun, aksi takdirde ikisini aynı anda çalıştıramazsınız (örneğin, WordPress için 8082 ve MySQL için 8083 kullanın).

İşiniz bittiğinde, aşağıdaki komutu çalıştıran kapsayıcıyı durdurabilirsiniz:

down yerine stop kullandığınızdan emin olun:

down , yalnızca kabı durdurmakla kalmayacak, aynı zamanda tamamen kaldıracaktır. Yani, bir kapsayıcıyı down komutunu kullanarak kapattıktan sonra docker-compose up kullanarak yeniden başlatırsanız, WordPress'iniz sıfırdan başlayacaktır (boş bir veritabanı, kaldırılmış bir WordPress vb.).

Docker ve WordPress Geliştirme

Harika! Docker'ı etkili bir şekilde kullanarak WordPress eklentileri ve temaları geliştirmek için neredeyse ihtiyacınız olan her şeye sahipsiniz. Umarım şimdiye kadar yaptığım açıklamalar yardımcı olmuştur ve artık Docker'ın ne olduğunu ve nasıl çalıştığını daha iyi anlamışsınızdır.

Bence bu kurulumda %100 etkili olmak için eksik olan sadece iki şey var:

  • Eklentinizi veya temanızı Docker kapsayıcısına nasıl eklersiniz.
  • Docker ile http://localhost:port yerine http://content.local gibi alan adları nasıl kullanılır?

Projenizi Docker Kapsayıcısına Ekleme

Ne zaman yeni bir eklenti veya tema üzerinde çalışmam gerekse yeni bir Docker kapsayıcısı oluşturuyorum. Rehberi buraya kadar takip ettiyseniz, muhtemelen Docker tarafından oluşturulan WordPress kurulumunun tamamen boş olduğunu ve hiçbir eklentimizi veya temamızı içermediğini fark etmişsinizdir. Öyleyse, yeni bir eklenti üzerinde çalıştığımı varsayarsak, bu eklentiyi kapta bulunan wp-content/plugins/ klasörüne nasıl eklerim?

Konteynırdaki dizinleri ortaya çıkarmak ve bunları ana makinemizde kullanılabilir kılmak için birden çok seçenek vardır. En çok sevdiğim, projemizin dizinini (ve yalnızca o dizini) WordPress'teki bir dizine eşler. Bunu somut bir örnekle görelim.

Dizüstü bilgisayarımla eklentim üzerinde çalıştığımı varsayalım. Bu eklenti şu anda ~/dev/nelio-content/ . Açıkçası bu eklentinin geliştirme ortamıma dahil edilmesini istiyorum, böylece test edebilir ve uyguladığım tüm değişikliklerin beklendiği gibi çalıştığını görebilirim. Yapacağım ilk şey, eklentime bir docker-compose.yml dosyası eklemek. Söz konusu dosyanın içeriği, daha önce gördüklerimizin tam bir kopyası olacak, ancak bir ekstra seçenekle:

Esasen, volumes adında yeni bir yönerge ekledik ve istediğimiz eşlemeyi belirledik. Yani, geçerli dizinin (yani, bir nokta . tanımlanan eklentimizin dizini) /var/www/html/wp-content/plugins/nelio-content (WordPress kapsayıcısındaki bir dizindir) ile eşlenmesini istiyoruz. Kolay değil mi? Sonuçta, kullandığımız sözdizimi bağlantı noktası eşleme için kullandığımızla aynı, ancak şimdi onu dizinlere uyguluyoruz.

Ve bu kadar! Şimdi kapsayıcımızı başlatırsak, eklentimizin Pano » Eklentiler ekranında mevcut olduğunu göreceğiz.

Alan Adlarını Kullanma

Ben şahsen localhost ve bir bağlantı noktası kullanarak geliştirme kurulumlarına erişmekten hoşlanmıyorum. http://content.local gibi alan adlarını kullanmanın çok daha kolay olduğunu düşünüyorum. Peki, bunu nasıl başarabiliriz? Pekala, birkaç şeye ihtiyacımız var…

Öncelikle belirli bir alan adının (örneğin, content.local ) bilgisayarın kendisi olduğunu bilgisayarımıza söylememiz gerekir. Bu, /etc/hosts dosyasını düzenlemek ve bu yeni alan adını localhost eşlemek kadar kolaydır:

Harika! Şu anda http://content.local , http://localhost ile tam olarak eşdeğerdir. Ama tam olarak istediğimiz bu değil… İstediğimiz şey http://content.local ile http://localhost:8080 eşlemek. Bunu yapmak için, istekleri eski adrese ikinci adrese eşleyen bir proxy sunucusuna ihtiyacımız var. Buna ulaşmak da çok kolaydır. Aşağıdaki docker-compose.yml dosyasıyla ~/docker/proxy adlı yeni bir klasör oluşturmanız yeterlidir:

Ardından, docker network create proxy çalıştırın ve docker-compose up -d kullanarak yeni kapsayıcınızı başlatın. Bu, tüm WordPress projelerimizin kullanacağı bir ağ oluşturacak (birazdan daha fazlası) ve tüm sihri yapacak proxy'yi yükleyecektir.

Son olarak, proxy'yi varlığı hakkında otomatik olarak bilgilendirecek şekilde WordPress kapsayıcımızı değiştirmemiz yeterlidir:

Tamam, burada birkaç şey yaptık. Uyguladığımız tüm değişikliklere daha yakından bakalım:

  • WordPress environment bölümüne iki yeni özellik ekledik: VIRTUAL_HOST ve VIRTUAL_PORT . Bunlar, VIRTUAL_HOST localhost:VIRTUAL_PORT ile eşleştirmek için kullanacağı niteliklerdir.
  • WordPress hizmetimizin proxy'mizle konuşmasını istediğimizden, her iki kapsayıcının da aynı ağda olduğundan emin olmamız gerekir. Bu oldukça kolaydır: WordPress'e bir networks seçeneği ekliyoruz ve frontend ağını dahil ediyoruz (istediğiniz anahtar kelimeyi kullanabilirsiniz). Sonra dosyanın sonuna birkaç kural daha ekledim. Özellikle, bir networks bölümü ekledim ve proxy adıyla frontend anahtar kelimesiyle tanımlanan harici bir ağ olduğunu belirttim. Bu harici ağın proxy'nin docker-compose.yml kullandığımızla aynı olduğuna dikkat edin.
  • Son olarak, WordPress ve MySQL'in de birbirleriyle konuşabildiğinden emin olmak istiyorum, bu yüzden onların da ortak bir ağda olduklarından emin olmam gerekiyor. Bunu yapmak için, ikisini de dahili olan ve bu nedenle başka kimsenin erişemeyeceği backend adlı başka bir ağa ekledim.

Ve bu kadar! Artık bu araç hakkında bildiğim her şeyi biliyorsun. Umarım bu kılavuzu beğenmişsinizdir ve beğendiyseniz, lütfen iş arkadaşlarınızla paylaşın ve aşağıdaki yorum bölümünde bana bildirin!

Öne Çıkan Resim, Abigail Lynn tarafından .

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