البرمجة

بناء ونشر تطبيق Flask باستخدام Docker

بناء تطبيق Flask ونشره باستخدام Docker على أوبنتو 18.04

مقدمة

تعد Flask من أشهر أطر العمل في Python لتطوير تطبيقات الويب بفضل بساطتها ومرونتها. يستخدمها المطورون بشكل واسع لإنشاء تطبيقات خفيفة وسريعة يمكنها التوسع بسهولة. من جهة أخرى، يعد Docker أحد الأدوات الرائدة في مجال تطوير البرمجيات، حيث يسمح بتغليف التطبيقات في حاويات (containers) لسهولة نشرها وإدارتها في بيئات متعددة. يهدف هذا المقال إلى استعراض كيفية بناء تطبيق Flask باستخدام Python ونشره باستخدام Docker على نظام أوبنتو 18.04.

المتطلبات الأساسية

قبل البدء، من المهم التأكد من أن لديك:

  1. Ubuntu 18.04 أو إصدار لاحق مثبت على جهازك.

  2. Python 3 و pip (مدير الحزم الخاص بـ Python).

  3. Docker مثبت على الجهاز.

  4. محرر نصوص مثل VS Code أو Sublime Text لتحرير الشيفرة البرمجية.

تثبيت Docker على أوبنتو 18.04

لتثبيت Docker على أوبنتو 18.04، اتبع الخطوات التالية:

  1. تحديث النظام:

    bash
    sudo apt update sudo apt upgrade
  2. تثبيت حزم Docker المطلوبة:
    أولاً، تأكد من أنك تثبت الحزم المطلوبة:

    bash
    sudo apt install apt-transport-https ca-certificates curl software-properties-common
  3. إضافة مفتاح Docker الرسمي إلى النظام:

    bash
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  4. إضافة مستودع Docker إلى قائمة المستودعات:

    bash
    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  5. تحديث مستودعات الحزم:

    bash
    sudo apt update
  6. تثبيت Docker:

    bash
    sudo apt install docker-ce
  7. التحقق من التثبيت:
    بعد تثبيت Docker، تحقق من أنه يعمل بشكل صحيح:

    bash
    sudo systemctl status docker
  8. تشغيل Docker بدون sudo (اختياري):
    لتجنب الحاجة إلى استخدام sudo في كل مرة تشغل فيها أو تستخدم Docker، أضف المستخدم إلى مجموعة Docker:

    bash
    sudo usermod -aG docker $USER
  9. إعادة تشغيل الجلسة:
    بعد إضافة المستخدم للمجموعة، قم بتسجيل الخروج وتسجيل الدخول مرة أخرى.

إنشاء تطبيق Flask

الخطوة التالية هي بناء تطبيق Flask بسيط. إليك كيف تبدأ:

  1. تثبيت Flask:
    قم أولاً بإنشاء بيئة افتراضية Python لتجنب تعارض الحزم، ثم قم بتثبيت Flask:

    bash
    python3 -m venv venv source venv/bin/activate pip install flask
  2. إنشاء ملف التطبيق:
    الآن، قم بإنشاء ملف يسمى app.py يحتوي على الشيفرة التالية:

    python
    from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello, World!' if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)
  3. تشغيل التطبيق محلياً:
    قم بتشغيل التطبيق باستخدام الأمر:

    bash
    python app.py

    افتح متصفح الإنترنت وادخل http://localhost:5000 لترى التطبيق يعمل.

بناء Dockerfile

الآن، لكي نقوم بنقل التطبيق إلى Docker، يجب أن ننشئ ملف Dockerfile يحتوي على التعليمات اللازمة لبناء الصورة الخاصة بالتطبيق.

  1. إنشاء Dockerfile:
    في نفس مجلد تطبيق Flask، أنشئ ملفاً جديداً باسم Dockerfile (بدون امتداد) وابدأ بكتابة التعليمات التالية:

    Dockerfile
    # استخدم صورة Python 3.8 كأساس FROM python:3.8-slim # تعيين مجلد العمل داخل الحاوية WORKDIR /app # نسخ ملفات التطبيق إلى الحاوية COPY . /app # تثبيت الحزم المطلوبة RUN pip install --no-cache-dir -r requirements.txt # تشغيل التطبيق على المنفذ 5000 CMD ["python", "app.py"]
  2. إنشاء ملف requirements.txt:
    قم بإنشاء ملف requirements.txt لاحتواء الحزم التي يحتاجها التطبيق:

    bash
    flask

بناء الصورة باستخدام Docker

بعد إنشاء Dockerfile وملف requirements.txt، يمكنك الآن بناء صورة Docker لتطبيق Flask الخاص بك:

  1. بناء الصورة:
    قم بتشغيل الأمر التالي من نفس المجلد الذي يحتوي على Dockerfile:

    bash
    docker build -t flask-app .
  2. التأكد من أن الصورة تم إنشاؤها بنجاح:
    تحقق من الصور باستخدام الأمر:

    bash
    docker images

تشغيل الحاوية (Container)

الآن بعد أن تم بناء الصورة بنجاح، يمكننا تشغيل التطبيق داخل حاوية Docker.

  1. تشغيل الحاوية:
    لتشغيل التطبيق داخل حاوية Docker، استخدم الأمر:

    bash
    docker run -p 5000:5000 flask-app
  2. التحقق من تشغيل التطبيق:
    افتح متصفح الإنترنت وادخل على http://localhost:5000 لرؤية تطبيق Flask يعمل داخل Docker.

نشر التطبيق على الخادم

لنفترض أنك ترغب في نشر تطبيق Flask باستخدام Docker على خادم بعيد. سنتبع هذه الخطوات:

  1. إعداد الخادم البعيد:
    يجب أن يكون لديك خادم يعمل بنظام أوبنتو 18.04 مع تثبيت Docker عليه.

  2. نقل الملفات إلى الخادم:
    قم بنقل مجلد التطبيق إلى الخادم البعيد باستخدام SCP أو rsync:

    bash
    scp -r /path/to/your/app username@remote-server:/path/to/destination
  3. بناء الصورة على الخادم البعيد:
    بمجرد نقل الملفات إلى الخادم، قم بتسجيل الدخول إلى الخادم، وانتقل إلى المجلد الذي يحتوي على Dockerfile، ثم قم ببناء الصورة:

    bash
    docker build -t flask-app .
  4. تشغيل الحاوية على الخادم:
    بعد بناء الصورة على الخادم، قم بتشغيل الحاوية:

    bash
    docker run -p 5000:5000 flask-app
  5. إعداد جدار الحماية:
    تأكد من فتح المنفذ 5000 في جدار الحماية على الخادم البعيد، حتى يمكن الوصول إلى التطبيق من الإنترنت:

    bash
    sudo ufw allow 5000
  6. الوصول إلى التطبيق:
    افتح متصفح الإنترنت وادخل على عنوان الخادم البعيد مع المنفذ 5000، مثل:

    bash
    http://your-server-ip:5000

تحسينات إضافية

استخدام Nginx مع Docker

لتوفير مزيد من الأمان والأداء لتطبيق Flask الخاص بك، يمكن استخدام Nginx كخادم ويب أمامي لخدمة التطبيق. ستحتاج إلى إضافة إعدادات Nginx لتوجيه الطلبات إلى تطبيق Flask الخاص بك داخل Docker.

استخدام Docker Compose

إذا كنت تستخدم عدة حاويات (على سبيل المثال، تطبيق Flask مع قاعدة بيانات مثل PostgreSQL)، يمكنك استخدام Docker Compose لتسهيل إدارة الحاويات. يمكنك إنشاء ملف docker-compose.yml يصف كيفية بناء وتشغيل الحاويات.

الخاتمة

لقد استعرضنا في هذا المقال كيفية بناء تطبيق Flask بسيط باستخدام Python ونشره باستخدام Docker على نظام أوبنتو 18.04. باستخدام Docker، يمكن تشغيل التطبيق في بيئات متعددة بسهولة، مما يتيح للمطورين نشر التطبيقات بشكل موثوق وقابل للتكرار.