Docker ile yerel WordPress geliştirme

Yeni Yılın Kutlu Olsun! Umarım bir tatilin tadını çıkarırsınız (çalışmak zorunda olmadığınızı varsayarsak) ve şimdi geri öğrenmeye istekli olursunuz. Eminim ve sizin için harika bir öğretici ile dönüyorum: WordPress’in geliştirilmesi için bir docker nasıl kullanılır. Aslında birkaç gün önce Twitter (Katalan’da) aracılığıyla duyurdum:
Estic Pensant Escriure Una Entrada Sobre Desenvolupamament En WordPress Utilitzant Docker … – David Aguilera (@Davilera) 17 Aralık 2018
Kısa bir hikaye ile başlayayım: Lamp (Linux + Apache + MySQL + PHP) kullanarak bir WordPress geliştiricisi olarak yolculuğuma başladım. Ne yazık ki, aynı anda birden fazla proje üzerinde çalışırken ayarların dağınık olduğunu hemen fark ettim, çünkü hepsi aynı sunucuyu, aynı veritabanını kullandılar … Daha sonra Vagrant’a (özellikle VVV) taşındım, bir ortam tasarlandı WordPress’in geliştirilmesi için, ancak bu can sıkıcı: 6 yaşındaki bilgisayarım birkaç sanal kutu örneğini yürütmekte birçok sorun yaşadı ve her şey çok yavaştı. Daha sonra Volan ile Yerel’ye taşınmaya çalıştım, çünkü Antonio gerçekten ortamın tadını çıkarıyor gibiydi … ama asla Linux’a gitmedi! Benim için hızlı, güvenilir ve kullanımı kolay bir seçenek yok mu?
Sonunda, Docker hakkında daha fazla bilgi edinmeye ve duyduğum aracın ihtiyaçlarıma uygun olup olmadığını görmeye karar verdim. Docker hakkında daha fazla bilgi edinmek istiyorsanız ve WordPress’inizin geliştirilmesinde kullanmak istiyorsanız, bu kılavuzu kaçırmayın – bir geliştirme ortamı nasıl hızlı ve verimli bir şekilde oluşturacağınızı öğrenin. Docker liman çalışanları, “konteynerizasyon” olarak da bilinen işletim sistemi düzeyini sanallaştıran bilgisayar programlarıdır. Klasik lambaların hazırlanmasına kıyasla iki ana avantajı vardır: birbirleri için izole edilmiş ve aralarındaki iletişim sınırlıdır, bu da güvenliği artırır
Araçlar, kütüphaneler, yapılandırma dosyaları ve kapların çalıştırılması gereken her şey kabın kendisindedir, yani temiz ve düzgün bir hazırlık yapacağımız anlamına gelir – konteyneri tamamladıktan sonra onu silebiliriz ve her şey kaybolacaktır.
Bence, Docker’ın diğer sanallaştırma yazılımına kıyasla ana avantajı, varsayılan olarak kullanılan sanallaştırma ortamıdır: Runc. Bu ortam, işletim sistemi ana bilgisayarındaki tüm kapları çalıştırır (tam bir sanal makine çalıştırmaz), bu da her şeyi daha hızlı ve daha hafif hale getirir. Bu, ana bilgisayarın (PC’miz) ve konukların (konteynerler) çok fazla kaynak paylaşacağı ve her şey “eski” bilgisayarda cazibe gibi çalışacağı anlamına gelir.
Linux’a (Debian/Ubuntu) bir Docker yüklemek için Docker kurulumu, aşağıdaki komutu çalıştırın:
Ekrandaki talimatları izleyin ve APT tamamlanana kadar bekleyin. Docker yüklendikten sonra Docker komutuyla kullanabiliriz. Bir Docker ile ilgili tek sorun, Sudo’yu kullanarak yönetici ayrıcalıklarıyla çalıştırmanız gerektiğidir. Ama bunu bitirebiliriz. Sudo olmadan bir docker çalıştırmayı tercih ediyorsanız (ve bu nedenle şifrenizi sık sık yazmaktan kaçının), kullanıcınızı Docker grubuna ekleyin: kullanıcınız Linux’ta kullanıcınızın adı açıkça. BTW, bu değişikliği gerçekten uygulamak için dışarı çıkıp tekrar girmeniz gerekebilir.
Mac veya Windows’a bir Docker nasıl yüklenir Mac veya Windows kullanıyorsanız, bir Docker’ı da yükleyebilirsiniz. Docker web sitesindeki talimatları izleyin:
Windows Kurulumu
Mac kurulumu
Bir Docker’ı nasıl kullanılır, şimdi bir Docker hazırladık ve kullanıma hazırız, denememizin zamanı geldi. Dediğim gibi, Docker mevcut uygulamaları yönetmek için bir araçtır. Bir konteyner başlatmak istiyorsak, aşağıdaki komutu çalıştırmamız gerekir:
Örneğin, bu komutu deneyin:
Hello World Classic’i bir Docker kapsayıcısında başlatmak için. Her şey beklendiği gibi çalışıyorsa, önce terminalinizde böyle bir şey göreceksiniz:
Bu bize bazı ilginç bilgiler verir. İlk olarak, Docker Hello-World adlı bir görüntü arıyor, ancak bulamıyor. İkincisi, resmi bir çevrimiçi görüntü deposunda aradı ve bu sefer çalıştı ve indirebildi. Ve bu Docker ile ilgili harika şeylerden biri: Docker kapsayıcısı olarak kullanabileceğimiz birkaç paketlenmiş uygulamaya sahip bir görüntü deposu var (WordPress’te, eklentiler ve tema dizini ile sahip olduğumuza benzer). Şimdi, terminalimize geri dönersek, merhaba dünya konteynerinin gerçek çıktısını görebiliriz: Ve hepsi bu! İlk Docker konteynerinizi çalıştırdınız mı?
Şimdi aşağıdaki komutu yazıyorsanız:
Bir Hello-World resim kullanarak oluşturulan bir Docker kapsayıcısı göreceksiniz:
Silmeleri için, sadece yazın:
Uygun konteyner kimliğini yazdığınızdan emin olun. Ve temelde bu sadece Docker’da … Peki, diğer araçlara (Docker Compose) geçelim ve WordPress geliştiricisi olarak nasıl kullanacağınızı öğrenelim mi? Tahmin edebileceğiniz bir Docker yazın, Docker görüntü deposunda mevcut bir WordPress görüntüsü var. Sadece resmi çekmemiz gerektiğini düşünebilirsiniz ve yeni bir WordPress sitesi başlatabiliriz, ancak bu aslında doğru değil:
Bir yandan, bu görüntü bir veritabanı sistemi içermez. Bu nedenle, bir WordPress sitesi başlatmak istiyorsak, MySQL’i bir yere (veya bir MySQL kabı kullanarak) yüklememiz gerekir.
Öte yandan, WordPress görüntüleri birkaç yapılandırma parametresi gerektirir (örneğin, bunlara erişmek için veritabanları ve kimlik bilgileri). Örneği her çalıştırdığımızda argümanı belirlememiz gerekir.
Docker komutunu kullanmak, özellikle bazı kapları aynı anda başlatmamız gerektiğinde ve bazıları diğerlerine (WordPress gibi) bağlı kaldığımızda karmaşık olabilir. Neyse ki, ihtiyacımız olan tüm kapsayıcıları, birbirlerine olan bağımlılığı ve belirli ayarları açıklamak için yapılandırma dosyalarını kullanan Docker-Compose adlı bir cihaz var. . Örneğin, ~/docker/test oluşturun ve aşağıdaki içerikle Docker-Compose.yml adlı bir dosya ekleyin:
Bu dosyanın karmaşık görünebileceğini biliyorum, ama aslında değil. Yakın dikkat edin: Dosyalar yalnızca WordPress: MySQL ve WordPress’i çalıştırmamız gereken iki hizmet (veya isterseniz kapsayıcılar) tanımlar. Birincisi (MySQL), ihtiyacımız olan görüntüler (açıkça bir MySQL görüntüsü, sürüm 5.7) ve çeşitli yapılandırma parametreleri hakkında bilgi içerir. En alakalı bir bağlantı noktası eşlemesi (konuklarda 3306 ile eşleşen ana bilgisayarımızda 8081 numaralı bağlantı noktasını kullanarak veritabanına erişebileceğiz) ve veritabanı ayarının kendisi (kullanıcı, şifre vb.) Olabilir.
Sonuncusu WordPress’in kendisidir (WordPress) ve benzer bir yaklaşım izler. Burada Docker Compose’a WordPress’in ev sahibimizde 8080 bağlantı noktası üzerinden erişilmesini istediğimizi söylüyoruz. Ayrıca WordPress’in diğer hizmetlere bağlı olduğunu da belirliyoruz: MySQL. Ve nihayet birkaç ek yapılandırma parametresi ekledik (temel olarak veritabanına erişmek için). Bittiğinde dosyayı kaydedin ve çıkarın ve aşağıdaki komutu yazın:
Ve Docker WordPress ve MySQL görüntülerini indirecek ve WordPress’imizi başlatacak. Birkaç dakika bekleyin ve bittiğinde, web tarayıcınızla http: // localhost: 8080’i açın (burada kullandığımız bağlantı noktasının yapılandırma dosyasında belirttiğimiz bağlantı noktasına nasıl eşleştiğine dikkat edin) ve yeni WordPress sitenizi göreceksiniz: WordPress Docker kapsayıcısında. Bundan sonra, yeni bir WordPress örneği oluşturmak istiyorsak, yalnızca tartıştığımız adımları tekrarlamanız gerekir. Yani, ~/ Docker/ ‘da yeni bir dizin oluşturacaksınız, bir Docker-Compose.yml dosyası ekleyeceksiniz ve ayarlayacaksınız. Bu yeni örnek için farklı bir bağlantı noktası kullandığınızdan emin olun veya her ikisi de aynı anda çalışamayacaksınız (örneğin, WordPress için 8082 ve MySQL için 8083 kullanın). Bittiğinde, kapsayıcıyı aşağıdaki komutu çalıştırmak için durdurabilirsiniz:
DURDURULUK kullandığınızdan emin olun:
Aşağı sadece kabı durdurmakla kalmayacak, aynı zamanda tamamen silecektir. Yani, aşağı komutu kullanarak kapatıldıktan sonra bir docker-compose kullanılarak bir kapsayıcıyı yeniden başlatırsanız, WordPress’iniz başlangıçtan başlar (boş veritabanı, kaldırma WordPress, vb.). Big Docker ve WordPress’in gelişimi! Docker’ı etkili bir şekilde kullanarak WordPress eklentileri ve temaları geliştirmek için neredeyse ihtiyacınız olan her şeye sahipsiniz. Umarım açıklamam şimdiye kadar faydalı olmuştur ve şimdi Docker’ın ne olduğunu ve nasıl çalıştığını anlıyorsunuz. Bence, bu düzenlemede% 100 etkili olmak için eksik sadece iki şey var:

Eklentinizi veya temanızı bir Docker kapsayıcısına nasıl ekleyebilirsiniz.
Http: //content.local gibi bir alan adı nasıl kullanılır http: // localhost: Docker ile bağlantı noktası. Projenizi bir Docker kapsayıcısına ekleyin Her yeni eklenti veya yeni bir tema üzerinde çalışmak zorunda kaldığımda, yapıyorum Yeni bir Docker kabı. Bu kılavuzu şimdiye kadar takip ederseniz, Docker tarafından oluşturulan WordPress kurulumunun tamamen boş olduğunu ve eklentilerimizi veya temalarımızı içermediğini fark edebilirsiniz. Peki, yeni bir eklenti üzerinde çalıştığımı varsayarsak, eklentiyi kapsayıcıda bulunan WP-Content/ Eklentileri/ hangisine nasıl ekleyebilirim? Konteynerin dizini açığa çıkarmak ve ana makinemizde kullanılabilir hale getirmek için birkaç seçenek vardır. Projemizin dizini (ve sadece bu dizini) WordPress’teki dizine eşleştirmekten hoşlandığım şey. Buna somut örneklerle bakalım. Dizüstü bilgisayarımla eklentimde çalıştığımı varsayalım. Bu eklenti şu anda ~/dev/nelio-concent/. Bu eklentinin geliştirme ortamıma dahil edilmesini açıkça 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. Dosya içeriği, gördüklerimizin bir kopyası olacak, ancak ek bir seçenekle:

Temel olarak, yalnızca ciltler adında yeni bir direktif ekliyoruz ve istediğimiz haritayı belirliyoruz. Yani, geçerli dizinin (yani, Point tarafından tanımlanan eklenti dizinimizin)/var/www/html/wp-concent/eklentileri/nelio-content (wordpress kapsayıcısında bir dizin olan) ile eşleştirmesini istiyoruz. Kolay değil mi? Ayrıca, kullandığımız sözdizimi bağlantı noktası eşleme için kullandığımızla aynıdır, ancak bunu geçerli dizine uyguluyoruz. Ve hepsi bu! Şimdi konteynerimizi başlatırsak, eklentilerimizin gösterge tablosunda »eklenti ekranında bulunduğunu göreceğiz. Alan adımı kişisel olarak kullanmak, LocalHost ve bağlantı noktasını kullanarak geliştirme kurulumuna erişmeyi sevmez. Bence http: //content.local gibi bir alan adı kullanmak çok daha kolay. Peki bunu nasıl başarabiliriz? Birkaç şeye ihtiyacımız var … İlk olarak, bilgisayarımıza belirli etki alanı adlarının (örneğin, content.local) bilgisayarların kendileri olduğunu söylememiz gerekiyor. Bu, dosyaları /etc /hostları düzenlemek ve bu yeni etki alanı adını IP LocalHost: Büyük! Şu anda http: //content.local, http: // localhost ile tamamen aynıdır. Ama istediğimiz bu değil … istediğimiz şey http: //content.local’a http: // localhost: 8080. Bunu yapmak için, isteği önceki adresle son adresle eşleyen bir proxy sunucusuna ihtiyacımız var. Bunu başarmak da çok kolaydır. Aşağıdaki Docker-Compose.yml dosyasıyla ~/Docker/Proxy adlı yeni bir klasör oluşturun:
Ardından, Docker ağını çalıştırın Proxy Oluşturun ve Docker -Chose Up -D’yi kullanarak yeni kabınızı başlatın. Bu, tüm WordPress projelerimiz (bir dakika içinde daha fazla) tarafından kullanılacak ağı yapacak ve tüm mucizeleri yapacak bir proxy kuracaktır. Son olarak, WordPress kapsayıcımızı sadece proxy’ye varlığı hakkında otomatik olarak anlatacak şekilde değiştirmemiz gerekiyor: Tamam, bu yüzden burada bazı şeyler yaptık. Uyguladığımız tüm değişikliklere daha yakından bakalım:
WordPress ortamında iki yeni özellik ekledik: Virtual_Host ve Virtual_port. Bu, virual_host’u localhost: virtual_port’a eşlemek için vekilimiz tarafından kullanılacak özelliktir.
WordPress hizmetimizin proxy’imizle konuşmasını istediğimiz için, her iki konteynerin de aynı ağda olduğundan emin olmalıyız. Bu oldukça kolaydır: WordPress’e ağ seçenekleri ekleriz ve bir ön uç ağını ekleriz (istediğiniz anahtar kelimeleri kullanabilirsiniz). Sonra, dosyanın sonunda birkaç kural daha ekledim. Özellikle, ağ bölümünü ekledim ve anahtar kelime tarafından proxy adıyla tanımlanan harici bir ağ olduğunu belirttim. Bu harici ağa Docker-Compose.yml Proxy’de kullandıklarımızla aynı dikkat edin.
Son olarak, WordPress ve MySQL’in birbirleriyle de konuşabileceğinden emin olmak istiyorum, bu yüzden aynı ağda olduklarından emin olmalıyım. Bunu yapmak için, her ikisi de dahili olan arka uç adı verilen başka bir ağa ekledim ve bu nedenle başka hiç kimse erişemez.

admin

Bir Cevap Yazın

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