یک 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 مستقل است.