İyi bir docker webdev iş akışı nasıl olurdu?
docker büyük webdev benim iş akışı artırabilirsiniz içimde bir his var - ama epey büyük bir proje yığını docker ekleme yaklaşımı nasıl etrafında başımı sarmak için yönetilen değil.
Temel yazılım yığını bu gibi görünecektir:
Yazılım
Docker resim(ler) özel bir LAMBA yığını sağlar
- Birkaç modülü ile Apache
- MYSQL
- PHP
- Bazı CMS, Silverstripe ör
GÄ°T
İş akışı
Biraz aşağıdaki gibi iş akışını hayal edebiliyorum:
GeliÅŸtirme
- LAMBA-konteyner gereksinimlerini tanımlayan
Dockerfile
yukarıda belirtilen yazmak- TALEP: makine apache/mysql çizme hemen sonra başlayacaktır
- Docker görüntüsü oluşturmak
- Dosyaları örneğin *3 CMS çalıştırmak için gerekli*kopyala
- Sürüm kontrol altında
~/dev/cmsdir/
koyun
- Sürüm kontrol altında
- Docker konteyner çalıştırın ve bir şekilde kabı
/var/www/
~/dev/cmsdir
monte edin - Veritabanı doldurmak
/dev/cmsdir/
işe yaramazlar- Commit & docker konteyner kapatın
Dağıtım
- Uzak makine (örneğin ansible ile) ayarlayın
- Uzak ana bilgisayara konteyner görüntü itin
- Git)
cmsdir
-proje getir - Docker konteyner çalıştırın, veritabanı çekin ve
/var/www
cmsdir
monte edin
Şimdi, bu, tüm oldukça hoş görünüyor kağıt üzerinde, AMA bu doğru bir yaklaşım olacağını mı, emin değilim.
Soru:
Yerel olarak geliştirirken, ne kadar kapsayıcı örneği yeniden doğmuş arasında kalıcı veritabanı alabilirim? Ya ben kap aşağıda dönen önce sql dökümü her zaman çalıştırmak için ihtiyaç duyar?
Db ve apache server için ayrı kap örnekleri var mı etmeliyim? Veya üzerinde kullanma durumu için tek bir konteyner için yeterli mi?
Eğer veritabanı ve sunucu için ayrı kaplar, nasıl otomatize iplik ve onları aşağı yukarı aynı anda olabilir miyim?
Nasıl aslında kaplar
/var/www/
-dizine/dev/cmsdir/
asayım ki? Bunun için data-volumes kullanmak gerekir?Herhangi bir tuzaklar kaçırdım mı? Basitleştirilmiş var mı?
CEVAP
Eğer CMS konteyner veritabanı sebat bağımsız ihtiyacınız varsa, MySQL için bir kap ve CMS sizin için bir kapsayıcı. Böyle bir durumda, MySQL konteyner hala çalışıyor olabilir ve CMS bağımsız olarak istediğiniz sıklıkta yeniden dağıtın.
Gelişme için başka bir seçenek ev sahibi/geliştirme makine veri birimleri kullanarak mysql veri dizinleri göster. Mysql (docker) gıt kullanarak veri dosyaları yönetebilirsiniz bu şekilde (host) ve "yeniden yükle" istediğiniz başlangıç durumu her zaman (mysql konteyner başlamadan önce).
Evet, db için ayrı bir kapsayıcı olması gerektiğini düşünüyorum.
Sadece temel komut dosyası kullanıyorum:
#!/bin/bash $JOB1 = (docker run ... /usr/sbin/mysqld) $JOB2 = (docker run ... /usr/sbin/apache2) echo MySql=$JOB1, Apache=$JOB2
Evet, veri-birimleri -v anahtarı kullanabilirsiniz. Kalkınma için bu kullanmak istiyorsunuz. Salt okunur montaj kullanabilirsiniz, herhangi bir değişiklik olursa (isterseniz uygulamanızın verileri başka bir yere neyse saklamak gerekir) bu dizine yapılacaktır.
docker run -v=/home/user/dev/cmsdir:/var/www/cmsdir:ro image /usr/sbin/apache2
Her neyse, final dağıtım, yapı ve görüntü
ADD /home/user/dev/cmsdir /var/www/cmsdir
ile dockerfile kullanarak yapardımBilmiyorum :-)
Nasıl normal bir sanal makine Docker f...
Nasıl kalıcı depolama (örneğin veritab...
nasıl bir dize bir akışı oluşturmak iç...
Bir byte içine Akışı dönüştürmek [nası...
Nasıl Docker listesi kaplarında mı.ıo?...