Docker’da yerel WordPress’in geliştirilmesi için şeytanbox kullanma
Bir geliştirme sitesi (la laravel vale) barındırmak için doğrudan makineme yazılım bağımlılıkları yüklemek istemiyorum.
Çok fazla kaynak harcayan ağır bir VM çalıştırmak istemiyorum (ALA VVV)
Yavaş olmak istemiyorum (görme)
GUI’ye bağlı olmak yerine CLI kullanmayı tercih ederim (Ala Local volan tarafından)
Docker harika bir “yeni parlaklık” doğru!?
Yukarıda belirtilen çözümlerden bazılarını denedikten sonra, Jeff’in CLI tabanlı yerel geliştirici ortamı (Teşekkürler Jeff) hakkındaki son makalesinden ilham aldım ve tüm kutuları kontrol eden yeni bir proje buldum: Devilbox.
Devilbox.org’a göre, Devilbox “bir yığın lamba ve modern ve sadece liman işçilerinin ve liman işçilerinin bileşimine dayanarak çok uyarlanmış araçların yerine”. Yerel WordPress sitemi barındırmam gereken tüm yazılımlarla birlikte geldi, bir Docker’da (hızlı) ve tamamen CLI’ye (Docker-Compose’a alışması önerilir) dayanıyor. Ayrıca, seçim dizininizdeki her alt dizinin, herhangi bir şeyi yeniden yüklemeden (biraz Park Valert komutu gibi) otomatik olarak yeni bir site haline geldiği havalı bir “Otomatik VirtualHosts” özelliğine sahiptir. Kulağa hoş geliyor!
Bu makalede, Makinenizde Şeytan Kutusu hazırlamanız ve Devilbox’ı kullanırken karşılaştığım bazı alışkanlıklardan ve bunların üstesinden nasıl geldiğimi konuşmada size rehberlik edeceğim. Devilbox’ı yüklemek Başlamadan önce, bu makalede Mac için bir Docker kullanarak MacOS’a Devilbox hazırladığımı söyleyeyim. Ancak, aynı işlem pencerelerde yapılabilir (daha fazla bilgi için Şeytan Kutusu belgesine bakın). Önce Devilbox’ı kurmamız gerekiyor. Bu aslında oldukça basit. Repo’yu klonladık ve örneği kopyaladık .env dosyası: $ git klonu https://github.com/cytopia/devilbox $ cd şeytanbox/$ cp env-acample .env. SH, temelde, ihtiyaç duyulan liman işçilerinin tüm resimlerini çekiyor: $ ./update-docker.sh o zaman şeytanbox’ı yapılandırmamız gerekiyor. Devilbox belgeleri ayarlayabileceğimiz tüm farklı ayarlar hakkında ayrıntılı olarak açıklanır, ancak varsayılanın çoğu bizim durumumuzda iyi olacaktır. .Env dosyanızda değiştirmek isteyebileceğiniz bazı ayarlar:
TLD_SUFFIX – Varsayılan olarak .loc’u bir alan takımı olarak kullanan şeytanBox. Unutmayın, Chrome kullanırsanız, TLD .DEV önerilmez.
Timezone – Yerel saat diliminize geçin.
Host_path_httpd_datadir – “Auto VirtualHosts” için site klasörünüzün konumu.
.Env dosyanızdaki doğru satırdaki yorumları silerek hizmetiniz için hangi Docker görüntüsünün kullanıldığını seçebileceğinizi unutmayın. Varsayılan olarak PHP-FPM-7.1, NGINX-Stable ve Mariadb-10.1 kullanılarak amacımız için iyi olacak.
Sonunda Devilbox’ı çalıştırmaya hazırız. Devilbox ile yapılandırılmış her hizmeti çalıştırmak isterseniz (örneğin Bind, PHP, Apache/Nginx, MySQL, Postgresql, Redis, memcached, MongoDB), sadece çalışmanız gerekir: $ Docker -Compose Up -d, In, In, Bizim durumumuz, PostgreSQL, MongoDB, vb. Gibi hizmetlere ihtiyaç duymuyoruz. Yani, sadece ihtiyacımız olanı belirleyerek çalıştırabiliriz: $ Docker -Compose -d Bind HTTP PHP MySQL Redis Harika şimdi uyanmak ve koşmalıyız! Her şeyi yeniden kontrol etmek ve yürümek için Docker-Compose PS’yi çalıştırabilirsiniz. Http: // localhost’u ziyaret ederseniz, mevcut hizmetlerinizin ve ilgili yapılandırmalarınızın durumunu görüntüleyen iyi bir durum sayfası da göreceksiniz. Devilbox’ta “Otomatik SanalHosts” özelliği nedeniyle bir site ekleyin, aslında yeni bir site hazırlamak Çok basit.
VirtualHost’unuz için yeni bir proje klasörü oluşturun (host_path_httpd_datadir adresinden) Proje klasörünün içinde DocumentRoot için HTDOCS adlı bir alt klasör yapın
127.0.0.1 di /etc /hosts’a işaret eden bir DNS notu oluşturun
Site klasörünüz (~/şeytanbox/data/www) için Devilbox varsayılan konumunu kullandığınızı varsayalım. Bu durumda aşağıdaki dizini oluşturmanız gerekir: $ cd ~/şeytanbox/data/www $ mkdir -p wordpress/htdocs sonra/etc/barındıran aşağıdaki satırları ekleyin:
127.0.0.1 WordPress.loc ve Presto! Devilbox artık yeni sitenize hizmet veriyor. Şeytan kutusu kontrol panelindeki sanal ana bilgisayar sayfasını görüntüleyerek sitenizin durumunu kontrol edebilirsiniz. Not: Sitenizle ilgili bir sorun varsa, gösterge paneli size sorunun ne olduğunu söyleyecektir.
Burada dikkate alınması gereken bir şey, örneğin Siteniz Git Repo ise ve yüksek seviyeli bir HTDOCS klasörüne sahip değilse, HTDOCS klasörünü uygun dizine bağlayabilirsiniz (daha fazla bilgi için belgelere bakın). Komut dosyasını çalıştırmak şimdi komut dosyasını bir PHP kapsayıcısında çalıştırmak istediğinizi söyleyin (örn. WP-CHLI komutunu, besteci kurulumunu veya bazı özel komut dosyalarını vb. Çalıştırın). Bunu Devilbox’ta nasıl yapıyorsun? Bash kabuğunu devam eden konteynere eklemek için bazı uzun ve karmaşık Docker komutları çalıştırabilirsiniz. Veya bunu yolla yapabilirsiniz. Sadece devam eden PHP kabına bağlanmak için komut dosyasını çalıştırın: $ ./Shell.sh kullanışlıdır. Kapta yaptığınız her değişikliğin, kap tekrar başladığında veya kapatıldığında kaybolacağını unutmayın. Bu nedenle, sorunu hata ayıklamak ve komutu kapsayıcıda bir kez çalıştırmak yararlı olsa da, dosyaların değiştirilmesini minimumda tutmayı denemelisiniz. Şeytan kutusu ile site ile geliştirirken bulduğum hizalama dizini, klasörü WordPress kurulumunuza bağlamak istediğinizde olan şeydir (örneğin, makinenizdeki başka yerlerde yayınlanan özel bir eklenti geliştirirseniz). Genellikle özel eklenti dizini WP-Concent/Eklentiler Dizini’ne bağlarsınız ve ayarlanırsınız. Ancak bu, Mevcut Docker, oluşturma bağlamının dışındaki SymLink dosyalarını desteklemediğinden şeytanbox ile çalışmayacaktır.
Bu sorunun üstesinden gelmek için, Docker-Compose.yml Compose.yml Devilbox dosyasını değiştirmeli ve PHP ve HTTPS hizmetlerine ses olarak özel bir eklenti dizini eklemelisiniz: PHP: … Volumes: …///Path/to/to/özel -Plugin: ////// custom-plugin: paylaşılan/httpd/wordpress/htdocs/wp-concent/eklentileri/özel plugin ideal bir çözüm değildir, ancak problemleri çözer. Harici ana bilgisayarlarla iletişim kurmak, Şeytan Kutusu’nda siteler geliştirirken bulduğum başka bir sorun, bilgisayarınızdaki diğer yerlerde (örneğin farklı Docker ağlarında veya VM vb.) Yayımlanan diğer sitelere bağlanmak istediğinizde olan şeydir. Örneğin, benim durumumda, ayrı bir Docker ağında yayınlanan bir MeGebot uygulamam var, ancak uygulamaya bağlanabilmek için şeytanbox sitemde bir MeGebot eklentisine ihtiyacım var. Di /etc /ana bilgisayarlarımda ana makinemde, 127.0.0.1 app.mergebot.loc için bir girişim var ama PHP kabına bağlanıp uygulamayı dener ve ping yaparsam. Gerçekten ihtiyacım olan şey, ana makinemin IP adresini ağdaki (EN0’in ipconfig desteğini çalıştırarak) bulmak ve işlevini sağlamak için kapta /etc /hosts dosyasına bir giriş eklemek. Ancak, yukarıda belirttiğim gibi, kapsayıcıdaki dosyaları düzenlemek kötü bir fikirdir, çünkü kaplama tekrar başlarsa veya yeniden yapılırsa herhangi bir değişiklik kaybolacaktır. Neyse ki Docker-Compose, harici bir ana bilgisayarın adını ele almak için konjenital bir mekanizmaya sahiptir. Docker-compose.yml Compose.yml Devilbox dosyasındaki PHP ve HTTPS hizmetlerine ekstra_hostların tanımını ekliyoruz:
PHP: … Extra_Hosts: – “App.mergebot.loc: 192.168.0.23” Bu, ana bilgisayarımın IP adresinin ara sıra değişebileceğini ve bu bilgileri her pratik değişiklik olduğunda manuel olarak güncelleyebileceğini anlayana kadar iyi işlev görüyor. Bu yüzden IP ana bilgisayarlarını .env dosyamdaki özel değişkenlerde saklamak için küçük bir komut dosyası yazmaya karar verdim, sonra kapatıp kapsayıcıyı gerektiği gibi başlattım. .Env dosyamın alt kısmında ekledim: Docker_mac_localhost = 192.168.86.24 Sonra yeni çevresel değişkenler kullanmak için Docker -Compose.yml’yi güncelledim: … Extra_hosts: – “App.mergebot.loc: $ {docker_mac_localhost} “Devilbox/Veri Dizininde Reset-Host-IP.sh adlı bir kabuk komut dosyası oluşturma: #!/Bin/sh Project_root =” $ (cd “$ (dirname” $ {Bash_Source [0]} “)/..” && pwd) “cd $ Project_root host_ip = ‘ipconfig berifaddr en0’ echo” $ host_ip olarak güncelleme … “s/docker_mac_localhost =.*/Docker_mac_localhost =.* -Compose httpd php && docker -compose rm -f httpd php && docker -compose -D httpd php echo “bitmiş”