SORU
23 Kasım 2013, CUMARTESİ


İ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

  1. LAMBA-konteyner gereksinimlerini tanımlayan Dockerfile yukarıda belirtilen yazmak
    • TALEP: makine apache/mysql çizme hemen sonra başlayacaktır
  2. Docker görüntüsü oluşturmak
  3. Dosyaları örneğin *3 CMS çalıştırmak için gerekli*kopyala
    • Sürüm kontrol altında ~/dev/cmsdir/ koyun
  4. Docker konteyner çalıştırın ve bir şekilde kabı /var/www/ ~/dev/cmsdir monte edin
  5. Veritabanı doldurmak
  6. /dev/cmsdir/ işe yaramazlar
  7. Commit & docker konteyner kapatın

Dağıtım

  1. Uzak makine (örneğin ansible ile) ayarlayın
  2. Uzak ana bilgisayara konteyner görüntü itin
  3. Git) cmsdir-proje getir
  4. 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:

  1. 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?

  2. 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?

  3. Eğer veritabanı ve sunucu için ayrı kaplar, nasıl otomatize iplik ve onları aşağı yukarı aynı anda olabilir miyim?

  4. Nasıl aslında kaplar /var/www/-dizine /dev/cmsdir/asayım ki? Bunun için data-volumes kullanmak gerekir?

  5. Herhangi bir tuzaklar kaçırdım mı? Basitleştirilmiş var mı?

CEVAP
24 Kasım 2013, Pazar


  1. 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).

  2. Evet, db için ayrı bir kapsayıcı olması gerektiğini düşünüyorum.

  3. 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
    
  4. 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ım

  5. Bilmiyorum :-)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • alex maybury

    alex maybury

    20 Aralık 2007
  • The Computer Chronicles

    The Computer

    7 Kasım 2012
  • wafflepwn

    wafflepwn

    14 AĞUSTOS 2008