ویرایش فایل‌های درون کانتینر داکر از روی هاست اصلی

سلام سلام

نمی‌دونم چی شد چطور شد یکهو دوباره یاد به روز کردن وبلاگ افتادم :) به هر حال آدمیزاد دیگه و کاریش نمیشه کرد.

کسایی که داکر کار کردن میدونن که با کامند مشابه زیر میشه یک فایل از هاست اصلی رو با کانتینر شیر کرد که معمولا برنامه‌هایی که کانفیگ طولانی و مفصلی دارند رو همچین بلایی سرشون میاریم.

اما این وسط یک نکته خیلی مسخره‌ وجود داره، وقتی داکر اجراست، هر چی فایل موجود روی هاست اصلی (در اینجا  haproxy.cfg)  رو  تغییر بدید، تغییرات رو داخل کانتینر مشاهده نمی‌کنید و مجبور می‌شید که داکر رو استاپ کنید و دوباره اجرا که برای یک کانتینر مثل haproxy که نقش لودبالانس رو داره این گزینه اصلا خوب نیست.

اما اگه توی مسیر خونگی فایل ‫.vimrc رو ایجاد کنید و داخلش خط زیر رو بگذارید و البته اگر ادیتور vim استفاده کنید این مشکل رو دیگه نخواهید داشت :)‌

 

کاری هم که این یک خط انجام میده رو اینجا کامل توضیح دادند. خلاصه‌ش اینه که هر فایلی که روی هارد وجود داره یک inode داره و وقتی با vim فایل رو ادیت میکنید، inode فایل هم تغییر میکنه اما فایلی که داخل کانتینر وجود داره هنوز به همون inode قبلی اشاره میکنه و برای همین هر چی هم که فایل رو تغییر میدیم، هیچ اثری از تغییر وجود نداره (مگر اینکه کانتینر رو به کل استاپ کنیم و بعد دوباره اجرا کنیم)‌. اما با اضافه کردن این یک خط ادیتور vim رو مجبور میکنیم که تغییرات رو روی همون inode قبلی ذخیره کنه :)

 

اما یک نکته بامزه دیگه هم وجود داره و اون اینکه اگر پرمیشن  فایل روی هاست اصلی رو به ۷۷۷  تغییر بدید یک جورایی مشکل حل میشه که باز دلیلش رو میتونید از اینجا بخونید :))

 

 

دیدگاه‌ها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *