ভূমিকা
আমি ডকার এবং বুট 2 ডকার ব্যবহার করে ওএস এক্সে বিকাশের পরিবেশ স্থাপনের কোনও ভাল উপায় খুঁজে পাচ্ছি না। আমি যে সমস্যাটি আঘাত করছি তা হ'ল উত্স কোডটি কীভাবে পরিচালনা করা যায় তা:
- আমি ইতোমধ্যে ইনস্টল থাকা সরঞ্জামগুলি (পাঠ্য সম্পাদক, আইডিই, গিট ইত্যাদি) ব্যবহার করে ওএস এক্সের কোডটি সংশোধন করতে পারি।
- এই পরিবর্তনগুলি ডকারের পাত্রে প্রতিবিম্বিত হয় তাই যদি আমি পরীক্ষাগুলি পুনরায় চালনা করি বা কোনও ওয়েবপৃষ্ঠাকে রিফ্রেশ করি তবে আমি আমার পরিবর্তনগুলি তত্ক্ষণাত্ দেখতে পাব।
তত্ত্বগতভাবে, আমার উত্স কোডটি ভলিউম হিসাবে মাউন্ট করে এটি করা সহজ হওয়া উচিত:
docker run -it -v /path/to/my/source/code:/src some-docker-image
দুর্ভাগ্যক্রমে, এর দুটি বড় সমস্যা রয়েছে যা এটি ওএস এক্সে সম্পূর্ণ অপ্রয়োজনীয় করে তোলে:
সমস্যা # 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: ফাইল পর্যবেক্ষণটি নষ্ট হয়েছে
এসবিটি, জ্যাকিল এবং গ্রান্ট ব্যবহারের মতো প্রযুক্তি যেমন ইনোটাইফাইয়ের ডিফল্ট ঘড়ির ব্যবস্থা, যা ডকার পাত্রে চালিত থাকলে কাজ করে না এবং ওএস এক্সে মাউন্ট করা ফোল্ডারে পরিবর্তন করা হয়।
আমি চেষ্টা করেছি
আমি সমাধানগুলি অনুসন্ধান করেছি (এসও-তে থাকা সমস্তগুলি সহ) এবং এর মধ্যে কয়েকটি চেষ্টা করেছিলাম, তবে সফল কোনও পাইনি:
- আমি এনএফএস ব্যবহার করতে বুট 2 ডকার পরিবর্তন করেছি , তবে এটি ঠিক ধীর ছিল।
- আমি ভ্যাগ্র্যান্ট + এনএফএস চেষ্টা করেছি এবং এটিও ঠিক ধীর ছিল।
- আমি সাম্বা মাউন্ট চেষ্টা করেছিলাম , তবে ফোল্ডারটি সর্বদা ডকার পাত্রে খালি দেখায়।
- আমি ইউনিসন ফাইল সিস্টেমটি ব্যবহার করার চেষ্টা করেছি , যা ফাইলগুলি সিঙ্ক করতে সংক্ষেপে কাজ করেছে, তবে সংযোগের ত্রুটিগুলি দেখিয়ে চলেছে ।
- আমি জ্যাকিলে পোলিং সক্ষম করেছিলাম , তবে আমার পরিবর্তনগুলি না নেওয়া পর্যন্ত এটি বিলম্বকে উল্লেখযোগ্যভাবে বাড়িয়েছে।
- আমি ডিঙ্গিকে , একটি "দ্রুত, বন্ধুবান্ধব ডকার ওএস এক্স উইথ ভ্যাগ্র্যান্ট" দিয়ে চেষ্টা করেছি এবং কিছুটা উন্নতি পেয়েছি । জেকিল সংকলনটি 10-15x ধীর হওয়ার পরিবর্তে এটি 2-3x ধীর ছিল। এটি আরও ভাল, তবে এখনও যথেষ্ট ব্যবহারযোগ্য নয়।
কেউ কি এমন কোনও সমাধান খুঁজে পেয়েছেন যা প্রকৃতপক্ষে কাজ করে এবং আপনাকে ডকার এবং ওএস এক্স এর সাথে উত্পাদনশীলভাবে কোড বিকাশ করতে দেয়?
আপডেট: শেষ পর্যন্ত একটি সমাধান!
আমি অবশেষে এমন একটি সমাধান পেয়েছি যা বুট 2 ডকার + আরএসএনসি ব্যবহার করে ফলপ্রসূ বলে মনে হচ্ছে। আমি কীভাবে এটি নিজের নিজের উত্তরটিতে সেট করতে হয় সেই সাথে ডকার-অক্স-ডেভ নামে একটি ওপেন-সোর্স প্রকল্প কীভাবে বিশদ ক্যাপচার করেছি ।