ديف أوبس

بناء تطبيق Django باستخدام Docker

بناء تطبيق جانغو بخادم Gunicorn ووضعه ضمن حاوية دوكر

في الوقت الذي يشهد فيه مجال تطوير البرمجيات نمواً كبيراً، يتزايد استخدام تقنيات حاويات دوكر بشكل كبير في بيئات الإنتاج. يوفر Docker بيئة معزولة وقابلة للنقل تسمح بتشغيل التطبيقات بكفاءة عبر بيئات مختلفة. في هذا المقال، سنتناول كيفية بناء تطبيق Django وتوظيفه على خادم Gunicorn، ثم نشره في حاوية Docker لتوفير بيئة إنتاج مرنة وقابلة للتطوير.

1. مقدمة

تعد Django إطار عمل مفتوح المصدر لبناء تطبيقات الويب باستخدام Python. يوفر Django أدوات ومكتبات جاهزة للعديد من المهام الشائعة في تطبيقات الويب، مثل إدارة قاعدة البيانات، معالجة النماذج، المصادقة، وطرق العرض. بينما يعد Gunicorn خادماً خفيفاً وفعالاً لتشغيل تطبيقات Python بشكل سريع، فهو يتعامل بشكل جيد مع Django ويعتبر خياراً شائعاً في بيئات الإنتاج.

أما Docker، فهو منصة لتطوير وتشغيل التطبيقات داخل حاويات، التي تتيح لك تشغيل التطبيقات في بيئات معزولة، مما يضمن أن التطبيق سيعمل بنفس الشكل في أي مكان بغض النظر عن البيئة.

2. إعداد تطبيق Django

2.1 تثبيت Django

لبدء بناء تطبيق Django، يجب أولاً تثبيت Django داخل بيئة Python. يمكن فعل ذلك باستخدام الأمر التالي:

bash
pip install django

بعد تثبيت Django، يمكن إنشاء مشروع جديد باستخدام الأمر التالي:

bash
django-admin startproject myproject

ينشئ هذا الأمر مجلدًا جديدًا يحتوي على هيكل مشروع Django القياسي. قم بالتنقل داخل هذا المجلد باستخدام:

bash
cd myproject

2.2 إعداد التطبيق

الآن سنقوم بإنشاء تطبيق جديد داخل مشروع Django باستخدام الأمر التالي:

bash
python manage.py startapp myapp

بعد إنشاء التطبيق، يجب إضافة هذا التطبيق إلى قائمة التطبيقات المثبتة في ملف settings.py:

python
INSTALLED_APPS = [ 'myapp', ... ]

2.3 إعداد قاعدة البيانات

Django يستخدم قاعدة بيانات SQLite بشكل افتراضي، ولكن يمكن تعديل إعدادات قاعدة البيانات في ملف settings.py لاستخدام قواعد بيانات أخرى مثل PostgreSQL أو MySQL. يمكن إنشاء قاعدة بيانات افتراضية باستخدام الأمر:

bash
python manage.py migrate

2.4 تطوير التطبيق

بإمكانك الآن تطوير التطبيق الخاص بك، إضافة النماذج (Models)، العروض (Views)، وطرق الوصول (URLs). على سبيل المثال، يمكننا إضافة نموذج بسيط داخل ملف models.py في التطبيق:

python
from 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)

ثم نقوم بتشغيل عملية الهجرة لتحديث قاعدة البيانات:

bash
python manage.py makemigrations python manage.py migrate

3. إعداد Gunicorn

3.1 تثبيت Gunicorn

يعد Gunicorn خادماً WSGI (واجهة برمجة تطبيقات خادم الويب لبيئة Python) الذي يمكنه تشغيل تطبيق Django في بيئة الإنتاج. لتثبيت Gunicorn، استخدم الأمر التالي:

bash
pip install gunicorn

3.2 تشغيل التطبيق باستخدام Gunicorn

بعد تثبيت Gunicorn، يمكن تشغيل التطبيق باستخدامه بدلاً من الخادم الافتراضي لـ Django (الذي هو خادم التطوير). يمكن تشغيل التطبيق باستخدام الأمر التالي:

bash
gunicorn 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 يحتوي على جميع المكتبات التي يحتاجها المشروع. يمكن إنشاؤه باستخدام الأمر:

bash
pip freeze > requirements.txt

يجب أن يحتوي الملف على المكتبات التالية على الأقل:

nginx
django gunicorn

4.4 بناء الحاوية

بناء الحاوية من خلال Dockerfile يتم باستخدام الأمر التالي:

bash
docker build -t mydjangoapp .

بعد اكتمال بناء الحاوية، يمكن تشغيل الحاوية باستخدام الأمر التالي:

bash
docker run -p 8000:8000 mydjangoapp

5. نشر التطبيق على خادم الإنتاج

عندما يتم بناء الحاوية وتشغيل التطبيق داخلها بنجاح، يمكن نشر الحاوية على خوادم الإنتاج مثل AWS، DigitalOcean، أو Google Cloud.

5.1 استخدام Docker Compose

في بيئات الإنتاج المعقدة، يمكن أن يتضمن التطبيق عدة حاويات مثل قاعدة بيانات وخادم تطبيق. لتسهيل إدارة الحاويات المختلفة، يمكنك استخدام Docker Compose. يقوم Docker Compose بتعريف وتشغيل عدة حاويات بسهولة باستخدام ملف YAML. هنا هو مثال على ملف docker-compose.yml:

yaml
version: '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، يمكن استخدام الأمر التالي:

bash
docker-compose up

سيقوم هذا الأمر بتشغيل كل من حاوية التطبيق وحاوية قاعدة البيانات وتوصيلها معاً.

6. ختام

باتباع هذه الخطوات، يمكنك بناء تطبيق Django يشغل على خادم Gunicorn ويوضع ضمن حاوية Docker. يوفر هذا النهج بيئة مرنة وآمنة لتشغيل التطبيقات في بيئات الإنتاج، ويسهل نقل التطبيق بين الخوادم المختلفة. باستخدام Docker، يمكنك ضمان أن التطبيق يعمل بنفس الشكل في جميع البيئات، مما يقلل من المخاطر المتعلقة بنقل التطبيقات.