From 412fe24bd766d79e8c387183e8d5c2767647ad91 Mon Sep 17 00:00:00 2001 From: javad Date: Tue, 16 Jun 2026 11:33:28 +0330 Subject: [PATCH] fix dockerfile --- Dockerfile | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/Dockerfile b/Dockerfile index aa74829..69a9ad4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ ENV PYTHONDONTWRITEBYTECODE=1 \ WORKDIR /app -# استفاده از کش سیستم‌عامل برای apt +# بهینه‌سازی ۱: استفاده از کش سیستم‌عامل برای apt RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ apt-get update && apt-get install -y --no-install-recommends \ @@ -20,7 +20,7 @@ ENV PATH="/opt/venv/bin:$PATH" COPY requirements.txt . -# استفاده از مکانیزم کش BuildKit برای pip +# بهینه‌سازی ۲: استفاده از مکانیزم کش BuildKit برای pip RUN --mount=type=cache,target=/root/.cache/pip \ pip install --default-timeout=1000 -i https://package-mirror.liara.ir/repository/pypi/simple -r requirements.txt @@ -35,10 +35,10 @@ ENV PYTHONDONTWRITEBYTECODE=1 \ WORKDIR /app -# ساخت کاربر سیستم غیر ریشه در بالاترین بخش ممکن برای حفظ کش +# بهینه‌سازی ۳: ساخت کاربر سیستم غیر ریشه در بالاترین بخش برای حفظ کِش داکر RUN useradd -m -u 1000 django -# استفاده از کش apt و ساخت دایرکتوری‌های مورد نیاز به صورت یکپارچه +# بهینه‌سازی ۴: استفاده از کش apt و ساخت دایرکتوری‌ها به صورت یکپارچه RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ apt-get update && apt-get install -y --no-install-recommends \ @@ -47,17 +47,16 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ mkdir -p /app/staticfiles /app/mediafiles /etc/supervisor /var/log/supervisor && \ chown -R django:django /app /etc/supervisor /var/log/supervisor -# کپی کردن و واگذاری مالکیت لایه پاکیزه پکیج‌ها به کاربر django +# کپی کردن و واگذاری مالکیت محیط مجازی به کاربر django (رفع باگ پنهان دسترسی) COPY --from=builder --chown=django:django /opt/venv /opt/venv -# بهینه‌سازی: کپی جداگانه اینتری‌پوینت برای خراب نشدن کش در تغییرات بعدی کد -COPY --chown=django:django entrypoint.sh /app/entrypoint.sh -RUN chmod +x /app/entrypoint.sh - -# کپی کردن کدهای پروژه با مالکیت کاربر محدود شده +# کپی کردن تمام کدهای پروژه با مالکیت کاربر محدود شده COPY --chown=django:django . . -# سوئیچ به کاربر غیر ریشه +# حل مشکل خطای Permission Denied (اجرایی کردن اسکریپت دقیقاً بعد از کپی شدن فایل‌ها) +RUN chmod +x /app/entrypoint.sh + +# سوئیچ به کاربر غیر ریشه برای امنیت پروداکشن USER django # اکسپوز پورت وب‌سرور برای وب‌پروکسی Coolify