بناء تطبيق جانغو بخادم Gunicorn ووضعه ضمن حاوية دوكر
في الوقت الذي يشهد فيه مجال تطوير البرمجيات نمواً كبيراً، يتزايد استخدام تقنيات حاويات دوكر بشكل كبير في بيئات الإنتاج. يوفر Docker بيئة معزولة وقابلة للنقل تسمح بتشغيل التطبيقات بكفاءة عبر بيئات مختلفة. في هذا المقال، سنتناول كيفية بناء تطبيق Django وتوظيفه على خادم Gunicorn، ثم نشره في حاوية Docker لتوفير بيئة إنتاج مرنة وقابلة للتطوير.
1. مقدمة
تعد Django إطار عمل مفتوح المصدر لبناء تطبيقات الويب باستخدام Python. يوفر Django أدوات ومكتبات جاهزة للعديد من المهام الشائعة في تطبيقات الويب، مثل إدارة قاعدة البيانات، معالجة النماذج، المصادقة، وطرق العرض. بينما يعد Gunicorn خادماً خفيفاً وفعالاً لتشغيل تطبيقات Python بشكل سريع، فهو يتعامل بشكل جيد مع Django ويعتبر خياراً شائعاً في بيئات الإنتاج.
أما Docker، فهو منصة لتطوير وتشغيل التطبيقات داخل حاويات، التي تتيح لك تشغيل التطبيقات في بيئات معزولة، مما يضمن أن التطبيق سيعمل بنفس الشكل في أي مكان بغض النظر عن البيئة.
2. إعداد تطبيق Django
2.1 تثبيت Django
لبدء بناء تطبيق Django، يجب أولاً تثبيت Django داخل بيئة Python. يمكن فعل ذلك باستخدام الأمر التالي:
bashpip install django
بعد تثبيت Django، يمكن إنشاء مشروع جديد باستخدام الأمر التالي:
bashdjango-admin startproject myproject
ينشئ هذا الأمر مجلدًا جديدًا يحتوي على هيكل مشروع Django القياسي. قم بالتنقل داخل هذا المجلد باستخدام:
bashcd myproject
2.2 إعداد التطبيق
الآن سنقوم بإنشاء تطبيق جديد داخل مشروع Django باستخدام الأمر التالي:
bashpython manage.py startapp myapp
بعد إنشاء التطبيق، يجب إضافة هذا التطبيق إلى قائمة التطبيقات المثبتة في ملف settings.py:
pythonINSTALLED_APPS = [
'myapp',
...
]
2.3 إعداد قاعدة البيانات
Django يستخدم قاعدة بيانات SQLite بشكل افتراضي، ولكن يمكن تعديل إعدادات قاعدة البيانات في ملف settings.py لاستخدام قواعد بيانات أخرى مثل PostgreSQL أو MySQL. يمكن إنشاء قاعدة بيانات افتراضية باستخدام الأمر:
bashpython manage.py migrate
2.4 تطوير التطبيق
بإمكانك الآن تطوير التطبيق الخاص بك، إضافة النماذج (Models)، العروض (Views)، وطرق الوصول (URLs). على سبيل المثال، يمكننا إضافة نموذج بسيط داخل ملف models.py في التطبيق:
pythonfrom django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
ثم نقوم بتشغيل عملية الهجرة لتحديث قاعدة البيانات:
bashpython manage.py makemigrations python manage.py migrate
3. إعداد Gunicorn
3.1 تثبيت Gunicorn
يعد Gunicorn خادماً WSGI (واجهة برمجة تطبيقات خادم الويب لبيئة Python) الذي يمكنه تشغيل تطبيق Django في بيئة الإنتاج. لتثبيت Gunicorn، استخدم الأمر التالي:
bashpip install gunicorn
3.2 تشغيل التطبيق باستخدام Gunicorn
بعد تثبيت Gunicorn، يمكن تشغيل التطبيق باستخدامه بدلاً من الخادم الافتراضي لـ Django (الذي هو خادم التطوير). يمكن تشغيل التطبيق باستخدام الأمر التالي:
bashgunicorn myproject.wsgi:application
يخبر هذا الأمر Gunicorn بتشغيل تطبيق Django من خلال ملف wsgi.py داخل مشروع myproject.
4. إعداد Docker
4.1 تثبيت Docker
قبل أن نتمكن من وضع تطبيق Django في حاوية Docker، يجب أن نثبت Docker على الجهاز الذي نعمل عليه. يمكن تنزيل Docker من موقعه الرسمي وتثبيته وفقاً لنظام التشغيل.
4.2 إنشاء Dockerfile
الخطوة التالية هي إنشاء ملف Dockerfile، الذي يحتوي على جميع التعليمات التي تخبر Docker كيفية بناء حاوية التطبيق. يجب أن يكون لديك Dockerfile في جذر مشروعك، مثل:
Dockerfile# استخدم صورة Python الرسمية FROM python:3.9-slim # تعيين مجلد العمل WORKDIR /app # نسخ متطلبات المشروع إلى الحاوية COPY requirements.txt /app/ # تثبيت المتطلبات RUN pip install --no-cache-dir -r requirements.txt # نسخ جميع ملفات المشروع إلى الحاوية COPY . /app/ # فتح المنفذ الذي سيعمل عليه التطبيق EXPOSE 8000 # الأمر لتشغيل التطبيق باستخدام Gunicorn CMD ["gunicorn", "myproject.wsgi:application", "--bind", "0.0.0.0:8000"]
4.3 إعداد ملف requirements.txt
لإعداد حاوية Docker بشكل صحيح، يجب تضمين ملف requirements.txt يحتوي على جميع المكتبات التي يحتاجها المشروع. يمكن إنشاؤه باستخدام الأمر:
bashpip freeze > requirements.txt
يجب أن يحتوي الملف على المكتبات التالية على الأقل:
nginxdjango
gunicorn
4.4 بناء الحاوية
بناء الحاوية من خلال Dockerfile يتم باستخدام الأمر التالي:
bashdocker build -t mydjangoapp .
بعد اكتمال بناء الحاوية، يمكن تشغيل الحاوية باستخدام الأمر التالي:
bashdocker run -p 8000:8000 mydjangoapp
5. نشر التطبيق على خادم الإنتاج
عندما يتم بناء الحاوية وتشغيل التطبيق داخلها بنجاح، يمكن نشر الحاوية على خوادم الإنتاج مثل AWS، DigitalOcean، أو Google Cloud.
5.1 استخدام Docker Compose
في بيئات الإنتاج المعقدة، يمكن أن يتضمن التطبيق عدة حاويات مثل قاعدة بيانات وخادم تطبيق. لتسهيل إدارة الحاويات المختلفة، يمكنك استخدام Docker Compose. يقوم Docker Compose بتعريف وتشغيل عدة حاويات بسهولة باستخدام ملف YAML. هنا هو مثال على ملف docker-compose.yml:
yamlversion: '3'
services:
web:
build: .
command: gunicorn myproject.wsgi:application --bind 0.0.0.0:8000
volumes:
- .:/app
ports:
- "8000:8000"
depends_on:
- db
db:
image: postgres:13
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydatabase
5.2 إدارة الحاويات باستخدام Docker Compose
لتشغيل الحاويات باستخدام Docker Compose، يمكن استخدام الأمر التالي:
bashdocker-compose up
سيقوم هذا الأمر بتشغيل كل من حاوية التطبيق وحاوية قاعدة البيانات وتوصيلها معاً.
6. ختام
باتباع هذه الخطوات، يمكنك بناء تطبيق Django يشغل على خادم Gunicorn ويوضع ضمن حاوية Docker. يوفر هذا النهج بيئة مرنة وآمنة لتشغيل التطبيقات في بيئات الإنتاج، ويسهل نقل التطبيق بين الخوادم المختلفة. باستخدام Docker، يمكنك ضمان أن التطبيق يعمل بنفس الشكل في جميع البيئات، مما يقلل من المخاطر المتعلقة بنقل التطبيقات.

