سلام سلام
نمیدونم چی شد چطور شد یکهو دوباره یاد به روز کردن وبلاگ افتادم :) به هر حال آدمیزاد دیگه و کاریش نمیشه کرد.
کسایی که داکر کار کردن میدونن که با کامند مشابه زیر میشه یک فایل از هاست اصلی رو با کانتینر شیر کرد که معمولا برنامههایی که کانفیگ طولانی و مفصلی دارند رو همچین بلایی سرشون میاریم.
1 |
docker run –d —name haproxy —net=host –v /dev/log:/dev/log –v /etc/haproxy/haproxy.cfg:/etc/haproxy/haproxy.cfg –v /var/lib/haproxy:/var/lib/haproxy –v /etc/letsencrypt/:/etc/letsencrypt ha |
اما این وسط یک نکته خیلی مسخره وجود داره، وقتی داکر اجراست، هر چی فایل موجود روی هاست اصلی (در اینجا haproxy.cfg) رو تغییر بدید، تغییرات رو داخل کانتینر مشاهده نمیکنید و مجبور میشید که داکر رو استاپ کنید و دوباره اجرا که برای یک کانتینر مثل haproxy که نقش لودبالانس رو داره این گزینه اصلا خوب نیست.
اما اگه توی مسیر خونگی فایل .vimrc رو ایجاد کنید و داخلش خط زیر رو بگذارید و البته اگر ادیتور vim استفاده کنید این مشکل رو دیگه نخواهید داشت :)
1 |
set backupcopy=yes |
کاری هم که این یک خط انجام میده رو اینجا کامل توضیح دادند. خلاصهش اینه که هر فایلی که روی هارد وجود داره یک inode داره و وقتی با vim فایل رو ادیت میکنید، inode فایل هم تغییر میکنه اما فایلی که داخل کانتینر وجود داره هنوز به همون inode قبلی اشاره میکنه و برای همین هر چی هم که فایل رو تغییر میدیم، هیچ اثری از تغییر وجود نداره (مگر اینکه کانتینر رو به کل استاپ کنیم و بعد دوباره اجرا کنیم). اما با اضافه کردن این یک خط ادیتور vim رو مجبور میکنیم که تغییرات رو روی همون inode قبلی ذخیره کنه :)
اما یک نکته بامزه دیگه هم وجود داره و اون اینکه اگر پرمیشن فایل روی هاست اصلی رو به ۷۷۷ تغییر بدید یک جورایی مشکل حل میشه که باز دلیلش رو میتونید از اینجا بخونید :))