2014-07-18 52 views
11

Docker tabanlı yerel dev ortamımda Laravel Artisan komutlarını çalıştırmak için zarif ve verimli bir yol bulamadım.Docker'da Artisan yolunu öner

herkes göçler gibi şeyler yapmak için tavsiye ya da "doğru" yolu önerebilir misiniz?

Veya, herkes bunu yapmanın düzgün bir yol buldu vardır? İdeal olarak örnek veya öneri ile. Ben kabul ettik

şeyler:

  • yeni bir kapsayıcı sadece komutları çalıştırmak için, ssh ile (aynı hacim ve db bağlantısını paylaşımı) (pis görünüyor).
  • Denetleyicideki haneler, daha sonra canlı olarak çalışabilecek (ideal değil).
  • db yapılandırmalarını düzenleme veya "ana bilgisayar" ortamında hacklemeye çalışmak, böylece en azından göç gibi şeyler ana bilgisayardan çalıştırılabilir.
  • Nesneleri çalıştırmak için web ön uçları oluşturma (gerçekten kötü).
  • Bunun için bir "sinyal" oluşturmaya çalışın.

Hala kafamı Docker'ım ve yeni konteyner-her şey için yaklaşıyor.

Ben hiçbir zaman bu serin-dev-op şeyler dengelemek istediğinizi varsayalım neden-do-I-ihtiyaç-başka-sahte-sunucu-just-get-it-işçi zaten.

benim dev iş akışı için gerçek anlamda bağ isterdim, ama bunun gibi belirli koşullar altında kullanımı zor hale görünüyor ...

Herhangi bir öneri ve fikirler bekliyoruz. Hepinize teşekkürler.

birkaç olasılık vardır
+0

istediğiniz herhangi komutunu çalıştırabilirsiniz Eğer Bundan sonra

docker exec -it my-container-name /bin/bash 

gibi çalışan kabı "enter" olabilir Yani şimdi yeni komutunu exec getirmek SSM olmadan NPM, Bower, Grunt, Artisan ve Besteci gibi birkaç farklı araç kullanma hakkında post [https://medium.com/@tomsowerby/proper-provisioning-with-docker- c412211b97bb). Ayrıca uygulamanızın ayrı bir veri birimi ve ayrı bir php kabı kurulumu altında sunulması için dylans blogunu da öneririm. – tomsowerby

cevap

8

Docker ile ilgili en iyi uygulama, her işlemi kendi konteynerinin içinde çalıştırmaktır. Bu nedenle, artisan komutlarını çalıştırmak için ideal yol, özellikle bu amaç için kapsayıcılar oluşturmak için bir görüntü elde etmektir.

Docker Hub dylanlindgren/docker-laravel-artisan'dan çekilebilen bir görüntü oluşturdum ve gerçekten iyi çalışıyor. GitHub numaralı telefonun yanısıra, Dockerfile modelinin arkasına da bir göz atmak isterseniz.

Ayrıca, tüm bu ayrı kapların birbirine uyma şeklini açıklayan bir blog post yazdım.

+0

Evet! Aynı sonuca vardım. Veritabanı bağlantılarını biraz ağrıda buldum, özellikle de birçok bağlantı türüyle mümkün olan tek bir Dockerfile/kapsayıcıya sahip olmak zor. İyi blog yazısı olsa da, bu sayfa boyunca gelen herkese tavsiye ederim. – tomsowerby

1

...

  1. içinde laravel uygulama hayatını klasör olarak Kapsayıcınızda bir konak dizini Montaj. Bu şekilde, ana bilgisayardan php artisan migrate veya composer update'u çalıştırabilirsiniz. Ancak, dağıtımınızla ilgili sorunlarınız olabilir, çünkü ortamınızın o kısmını sunucuda çoğaltmanız gerekir.

  2. (önerilmez edilmiştir; here's a good discussion of that) kapsayıcınıza bir SSH sunucusuna ekledi.

  3. inşa ve nsenter kullanın "girme" çalışan bir kap ve kabuk erişimi almak için bir araç. Not, kullanmadım, sadece bir süre önce yukarıdaki bağlantıda bir referansla buldum. Eğer dağıtım öncelikle ilgilendikleri ve bir dockerfile yoluyla yapıyorsanız

ardından cevap konteyner inşa edildiğinde onlar çalıştırmak böylece dockerfile için composer install ve php artisan migrate eklemek olacaktır.

Buna daha fazla cevap duymakla ilgileniyorum. Bu sadece içine girdiğim ve hakkında daha fazla bilgi edinmek istediğim bir şey.

1

SSH'yi kullanıyorum ve aktarımları kapsayıcının içindeki bir uçbirimden geçiriyorum.

Kişisel olarak Docker'ı 'lightweight virtual machine' kullanmanın Phusion's yaklaşımını kullanmayı seviyorum. Ben kendi Docker image for Laravel applications kendi oluşturmak için genişletilmiş ettik kendi baseimage-docker kullandım.

Biliyorum, Phusion'ın görüntüsü Docker topluluğunda tartışmalı olabilir ve bazıları Docker kapsayıcılarını microservices olarak savunan SSH is frowned upon. Ama çok konteynır yaklaşımı için daha yerleşik araçlar ve uygulamalar bulunana kadar Phusion'ın yaklaşımından memnunum.

10

Docker 1.3 Eğer ben bir oluşturduk

php artisan --version 
+0

? çalışan konteyner TTY modunda değilse –

İlgili konular