چند اصل برای Dockerfileهای بهتر
پس از یادگیری دستورات پایه، رعایت چند اصل باعث میشود ایمیجهای شما سبکتر، امنتر و قابلنگهداریتر شوند. اول، همیشه از ایمیجهای پایهی سبک استفاده کنید؛ نسخههای slim یا alpine بهجای نسخهی کامل، حجم قابلتوجهی کم میکنند:
FROM python:3.12-slim
دوم، هرگز از تگ latest در محیط production استفاده نکنید؛ همیشه یک نسخهی مشخص قفل کنید تا build شما در آینده بهطور غیرمنتظره تغییر نکند. سوم، از کاربر غیر-root داخل کانتینر استفاده کنید:
RUN useradd --create-home appuser
USER appuser
اجرای کانتینر با کاربر root ریسک امنیتی بالایی دارد؛ اگر مهاجمی از یک آسیبپذیری داخل برنامه سوءاستفاده کند، دسترسی root داخل کانتینر میتواند خطرناکتر باشد. چهارم، از فایل .dockerignore برای جلوگیری از کپی شدن فایلهای غیرضروری (مثل .git، __pycache__، محیط مجازی) استفاده کنید، دقیقاً مشابه .gitignore:
.git
__pycache__/
*.pyc
venv/
.env
پنجم، دستورات RUN مرتبط را با && در یک خط ترکیب کنید تا لایههای کمتری ساخته شود و فضای اضافی پاک شود:
RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*
رعایت این اصول تفاوت زیادی بین یک image آماتور و یک image آمادهی production ایجاد میکند.