چند نکته جالب برای بهینه کردن داکرفایل Dockerfile - قسمت اول

سلام. امروز میخوایم یکم راجب نکاتی که ممکنه زیاد باهاش توی داکرفایل بر بخورین صحبت کنیم. نکاتی که اراعه میدم ممکنه ۱۰۰ درصد دقیق نباشه اما تلاش من بر این هست که حداکثر دقت رو داشته باشه. همچنین یادآوری میکنم که برای درک این نکات لازمه که دانش حداقلی با داکر و داکرفایل داشته باشید.

از دوستان آگاه در زمینه داکر خواهش میکنم در صورت مشاهده هر اشتباهی در نظرات ما رو باخبر کنن.

حالا بریم سر اصل مطلب:

در هنگام گرفتن یک ایمیج دقیقا ورژن رو مشخص کنید.

وقتی در داکر فایل با دستور FROM میخوایم نام ایمیج رو مشخص کنیم بهتره که ورژن ایمیج مورد نظر رو وارد کنیم. معمولا خیلی از ماها از دستور latest استفاده میکنیم که ممکنه در آینده با ورژن های جدیدتر اون ایمیج به مشکل بخوره. پس وارد کردن ورژن دقیق ایمیج مهم هست که مطمعن بشیم در آینده کاربران آن به ارور نخورن.


در صورت امکان از ایمیج های رسمی استفاده کنید

گاهی اوقات برای استفاده از یک برنامه خاص میشه از چند روش استفاده اش کرد. به طور مثال در تصویر زیر میبینید که پکیج openjdk رو اومده داخل ایمیج debian دانلود و نصب کرده. در صورتی که اگر در داکرهاب جستجو کنیم ایمیج رسمی openjdk هست و نیازی به کد های اضافی نیستش

به دنبال نسخه های کم حجم تر ایمیج مورد نظر بگردید

گاهی اوقات در ایمیج های رسمی ورژن های مینیمال شده و کم حجم شده وجود داره که فقط کافیه در هنگام اجرای دستور FROM ورژن درست رو وارد کنیم. با این کار بیخودی حجم پکیج بالا نمیره.


میتونید از چند FROM در داکرفایل استفاده کنید

در داکرفایل میتونید چندین FROM را اجرا کنید و برای هر کدام یک نام مشخص تعیین کنید


در دستور COPY میتونید از محتوای استیج های دیگه استفاده کنید

اگر به تصویر دقت کنید در مرحله دوم FROM که openjdk رو فراخوانی میکنه از دستور COPY استفاده کرده و یک پارامتر با نام --from استفاده کرده. با این پارامتر میگیم که محتوای مرحله قبلی که نامش رو builder گذاشته بودیم رو به عنوان مبنا قرار بده


میتونید در هنگام اجرای ساخت داکر استیج خاصی رو وارد کنید

در قسمت های بالا گفتیم که میتونیم در یک داکرفایل چندین استیج یا همان FROM استفاده کنیم و برای هر کدام یک نام خاص تعیین کنیم. نکته جالب اش اینجاست که میتونیم در هنگام اجرای دستور docker build نام یک استیج خاص رو وارد کنیم که فقط همون اجرا بشه.

گاهی اوقات ما داکرفایل رو قبلا اجرا کردیم و بعدا میخوایم فقط قسمت خاصی از پروژه که ویرایش شده اپدیت بشه. اینجا این دستور به کار میاد.


خب من ازین بیشتر خسته اتون نمیکنم در قسمت دوم با نکات بیشتری ادامه میدیم :)