Giriş
Docker ve Boot2Docker kullanarak OS X üzerinde bir geliştirme ortamı kurmanın iyi bir yolunu bulamıyorum. Karşılaştığım sorun, kaynak kodunun nasıl yönetileceği, böylece:
- Zaten yüklediğim araçları (metin düzenleyici, IDE, git, vb.) Kullanarak OS X'teki kodu değiştirebilirim.
- Bu değişiklikler Docker konteynerine yansıtılır, böylece testleri yeniden çalıştırırsam veya bir web sayfasını yenilersem değişikliklerimi hemen görebilirim.
Teorik olarak, kaynak kodumu bir cilt olarak monte ederek bunu yapmak kolay olmalı:
docker run -it -v /path/to/my/source/code:/src some-docker-image
Ne yazık ki, bunun OS X'te tamamen kullanılamaz hale getiren iki ana sorunu var:
Sorun 1: VirtualBox'ta (vboxsf kullanan) takılan birimler çok yavaş
Örneğin , kaynak kodu Docker görüntüsünün bir parçasıysa Jekyll'in ana sayfamı derlemesi ne kadar sürer :
> docker run -it brikis98/yevgeniy-brikman-homepage:v1 bash
root@7aaea30d98a1:/src# time bundle exec jekyll build
[...]
real 0m7.879s
user 0m7.360s
sys 0m0.600s
İşte tam olarak aynı Docker görüntüsü, bu sefer hariç, kaynak kodunu OS X'ten monte ediyorum:
> docker run -it -v $(pwd):/src brikis98/yevgeniy-brikman-homepage:v1 bash
root@1521b0b4ce6a:/src# time bundle exec jekyll build
[...]
real 1m14.701s
user 0m9.450s
sys 0m3.410s
Sorun 2: Dosya izleme hatalı
SBT, Jekyll ve grunt'taki varsayılan izleme mekanizmaları, bir Docker konteynerinde çalışıyorlarsa çalışmayan inotify gibi teknolojileri kullanır ve OS X'de takılı bir klasöre değişiklikler yapılır.
Denediğim geçici çözümler
Çözümler aradım (SO'dakilerin tümü dahil) ve birkaçını denedim, ancak başarılı bir çözüm bulamadım:
- Ben NFS kullanmak Boot2Docker açık , ama sadece yavaş olarak oldu.
- Vagrant + NFS'yi denedim ve bu da aynı derecede yavaştı.
- Bir Samba bağlantısı denedim , ancak klasör Docker konteynerinde her zaman boş görünüyordu.
- Dosyaları senkronize etmek için kısa bir süre çalışan ancak daha sonra bağlantı hatalarını göstermeye devam eden Unison dosya sistemini kullanmaya çalıştım .
- Jekyll'de oylamayı etkinleştirdim , ancak bu, değişikliklerim alınana kadar gecikmeyi önemli ölçüde artırdı.
- Denedim Dingi , bir "Vagrant ile OS X hızlandırır; Docker" ve got bazı iyileştirme. Jekyll derlemesinin 10-15x daha yavaş olması yerine 2-3x daha yavaştı. Bu daha iyi, ancak yine de pek kullanışlı değil.
Docker ve OS X ile gerçekten çalışan ve verimli bir şekilde kod geliştirmenize izin veren bir çözüm bulan oldu mu?
Güncelleme: sonunda bir çözüm!
Sonunda Boot2Docker + rsync kullanarak verimli görünen bir çözüm buldum. Bunu nasıl kuracağımla ilgili ayrıntıları kendi cevabımda ve docker-osx-dev adında açık kaynaklı bir projede yakaladım .