فصل پنجم: داکرایز کردن یک پروژه‌ی جنگو

نوشتن Dockerfile برای جنگو

یک Dockerfile واقعی برای پروژه‌ی جنگو

حالا آموخته‌های فصل‌های قبل را روی یک پروژه‌ی واقعی جنگو پیاده می‌کنیم. یک Dockerfile مناسب برای توسعه به این شکل است:

FROM python:3.12-slim

ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1

WORKDIR /code

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

EXPOSE 8000

CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

PYTHONDONTWRITEBYTECODE از ساخت فایل‌های .pyc غیرضروری جلوگیری می‌کند و PYTHONUNBUFFERED باعث می‌شود خروجی لاگ پایتون بلافاصله (بدون بافر) نمایش داده شود، که برای دیدن لاگ‌ها با docker compose logs ضروری است. توجه کنید که سرور توسعه‌ی جنگو باید روی 0.0.0.0 اجرا شود، نه 127.0.0.1، وگرنه از بیرون کانتینر قابل دسترسی نخواهد بود.

فایل requirements.txt

مطمئن شوید فایل requirements.txt شامل تمام وابستگی‌های لازم است:

Django==5.0.6
psycopg2-binary==2.9.9
gunicorn==22.0.0
django-environ==0.11.2

psycopg2-binary برای اتصال جنگو به پستگرس و gunicorn برای اجرای production در فصل بعد لازم است. با این دو فایل آماده، پروژه‌ی جنگوی شما اکنون قابل بسته‌بندی در یک image مستقل است.

برای ذخیره‌ی پیشرفت و شرکت در آزمون، وارد شوید — رایگان است.