पहचान
मैं Docker और Boot2Docker का उपयोग करके OS X पर एक विकास वातावरण स्थापित करने का एक अच्छा तरीका नहीं समझ सकता। समस्या मैं मार रहा हूँ कैसे स्रोत कोड का प्रबंधन करने के लिए है कि:
- मैं पहले से ही स्थापित किए गए टूल (टेक्स्ट एडिटर, आईडीई, गिट, आदि) का उपयोग करके ओएस एक्स पर कोड को संशोधित कर सकता हूं।
- उन संशोधनों को डॉकटर कंटेनर में परिलक्षित किया जाता है, इसलिए यदि मैं परीक्षण को फिर से चलाता हूं या किसी वेबपेज को रीफ्रेश करता हूं, तो मैं तुरंत अपने बदलाव देख सकता हूं।
सिद्धांत रूप में, वॉल्यूम के रूप में मेरे स्रोत कोड को बढ़ते हुए ऐसा करना आसान होना चाहिए:
docker run -it -v /path/to/my/source/code:/src some-docker-image
दुर्भाग्य से, इसके दो प्रमुख मुद्दे हैं जो इसे OS X पर पूरी तरह से अनुपयोगी बनाते हैं:
अंक # 1: वर्चुअलबॉक्स पर माउंट किए गए वॉल्यूम (जो vboxsf का उपयोग करते हैं) बेहद धीमी हैं
उदाहरण के लिए, स्रोत कोड डॉकर छवि का हिस्सा है, तो मेरे होमपेज को संकलित करने में जेकिल को कितना समय लगता है, यहां है :
> 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
यहां ठीक उसी डॉकर छवि है, इस समय को छोड़कर, मैं ओएस एक्स से स्रोत कोड को माउंट करता हूं:
> 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
अंक # 2: फ़ाइल देखना टूट गया है
SBT, Jekyll, और ग्रन्ट में डिफ़ॉल्ट वॉच मेकेनिज्म, inotify जैसी तकनीकों का उपयोग करते हैं, जो डॉकटर कंटेनर में चल रहे हैं और ओएस एक्स में माउंट किए गए फ़ोल्डर में बदलाव किए जाने पर काम नहीं करते हैं।
वर्कअराउंड मैंने कोशिश की
मैंने समाधान खोजा (एसओ पर सभी लोगों सहित) और उनमें से कुछ को आज़माया, लेकिन एक सफल नहीं मिला है:
- मैंने NFS का उपयोग करने के लिए Boot2Docker को स्विच किया , लेकिन यह उतना ही धीमा था।
- मैंने Vagrant + NFS की कोशिश की , और वह भी बिल्कुल धीमी गति से।
- मैंने सांबा माउंट की कोशिश की , लेकिन फोल्डर हमेशा डॉकटर कंटेनर में खाली दिखा।
- मैंने यूनिसन फाइल सिस्टम का उपयोग करने की कोशिश की , जो फाइलों को सिंक करने के लिए संक्षेप में काम करता था, लेकिन फिर कनेक्शन त्रुटियों को दिखाता रहा ।
- मैंने Jekyll में मतदान को सक्षम किया , लेकिन जब तक मेरे परिवर्तन नहीं किए गए, तब तक देरी बढ़ गई।
- मैंने डिंगी की कोशिश की , "वैग्रंट के साथ ओएस एक्स पर एक तेज, मित्रवत डॉकटर" और कुछ सुधार हुआ। Jekyll संकलन 10-15x धीमा होने के बजाय, यह 2-3x धीमा था। यह बेहतर है, लेकिन अभी भी काफी उपयोगी नहीं है।
क्या किसी ने एक समाधान पाया है जो वास्तव में काम करता है और आपको डॉकर और ओएस एक्स के साथ कोड विकसित करने की अनुमति देता है?
अद्यतन: अंत में एक समाधान!
मैंने आखिरकार एक ऐसा समाधान ढूंढ लिया है जो Boot2Docker + rsync का उपयोग करके उत्पादक लगता है। मैंने इस विवरण को अपने स्वयं के उत्तर के साथ-साथ एक ओपन-सोर्स प्रोजेक्ट के रूप में सेट करने के तरीके पर कब्जा कर लिया है, जिसे docker-osx-dev कहा जाता है ।